C++中两个类中互相引用

版权声明:本文为博主原创文章,转载请注明出处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
}

猜你喜欢

转载自blog.csdn.net/jiange_zh/article/details/78151160