//a.h file
#include <b.h>
class B;
class A {
public:
A();
~A();
private:
B b; //这个会出错
B *b; //这个不会出错
}
//b.h file
class B {
public:
B();
~B();
}
总结:
使用类的 forward declaration 可以创建类的指针和引用。这是因为指针/引用在所有类/结构/等中表示相同。它们都只是内存地址。因此,例如,您可以在完全定义类之前创建第二个类,该类可以接受或包含指针或引用;
在编译器看到类的完整定义之前,您无法实例化它。否则编译器不知道要分配多少内存以及如何调用构造函数和其他方法。在大多数情况下,C++ 期望在使用之前先定义事物。前向声明可以让您稍微解决这个问题,因为任何类的指针和引用都是相同的。所以你可以向编译器保证你稍后会完全定义它。