C++中类相互包含的问题

       其实这个问题应该算是C++中比较常见的一个问题了,就是C++中两个类相互包含,如果都在各自的类的头文件中包含对方,肯定会报错。最近就遇到了这个问题,最后在网络上找到了解决的办法。解决的办法如下:

        假如有A和B两个类,分别对应的头文件为A.h,B.h和源文件A.cpp和B.cpp。

        则在A的头文件(A.h)中包含B的头文件(B.h),在A的源文件(A.cpp)中包含(A.h),在B的头文件中使用A的声明(class A;)而不是包含A的头文件,然后在B的源文件(B.cpp)中包含A的头文件和B的头文件。代码如下:

// 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
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值