版权声明:本文为博主原创文章,转载请注明出处http://blog.csdn.net/jiange_zh https://blog.csdn.net/jiange_zh/article/details/78151160
有时候,我们会有两个类需要互相引用的场景,由于两个类的定义是有顺序的,因此两个类相互引用,不管哪个类在前面,都会出现有一个类未定义的情况。
这时可以通过类的前置声明来提前告诉编译器,所要引用的是个类,但由于此时后面的那个类还没有定义,因此无法给对象分配确定的内存空间,故只能使用类指针而不能是类实体。
// 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):m_pA(pA) {}
void useA();
private:
A* m_pA;
};
//B.cpp
#include "A.h"
#include "B.h"
void B::useA()
{
//do something for m_pA
}