有时候,我们会有两个类需要互相引用的场景,由于两个类的定义是有顺序的,因此两个类相互引用,不管哪个类在前面,都会出现有一个类未定义的情况。
这时可以通过类的前置声明来提前告诉编译器,所要引用的是个类,但由于此时后面的那个类还没有定义,因此无法给对象分配确定的内存空间,故只能使用类指针而不能是类实体。
// A.h
#include "B.h"
class A
{
public:
A(B* pB):m_pB(pB) {}
void useB();
private:
B* m_pB;
};
//A.cpp
#include "A.h"
void A::useB()
{
//do something for m_pB
}
//B.h
class A;
class B
{
public:
B(A* pA):