我看到的所有循环包含依赖项的解决方案只是说在“这种特殊情况”中不需要完整的类定义,因为“你”只使用指向该类的指针。
我遇到了这个问题并使用前向声明修复了它。
我想知道当你需要两个类中另一个类的具体定义时你应该做什么。
另外,为什么使用指向类的指针允许您使用前向声明而不是类定义?
最佳答案
在什么情况下您需要预先知道两个类的规范?
一种不可能的情况如下:
class A
{
B m_b;
};
class B
{
A m_a;
};
但这是不可能的,因为 A 类的大小取决于 B 类的大小,而 B 类的大小又取决于 A 类的大小。您还会得到一个无限级数 A myA; myA.m_b.m_a.m_b.m_a....
当你尝试构建其中任何一个时。
如果你使用指针,你不需要知道两者的大小;指针的大小始终相同,具体取决于您所在的平台。该系列消失了,因为堆中的对象需要显式创建。
关于c++ - 通告包括依赖/转发声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45992795/