头文件相互包含问题

      这几天在写一个普通的消除方块的游戏,已经接近尾声,大概花了24小时左右。快要结束的时候又让我遇到了以前遇到过的一个问题,而且还忘记了,于是回顾了一下。趁有空顺便写个终结,以防再遇到。相互包含的情况在越大型的项目中越容易出现,虽然不知道是不是可以通过逻辑优化的方式解决,但是实际上还是有方便的方法解决的。下面是出现相互包含的具体代码。
A.h中
#include"B.h"
class CA
{
CB* m_pb;
};
A.cpp中
#include"A.H"
#include"B.H"

B.h中
#include"A.h"
class CB
{
CA* m_pa;
};
B.cpp中
#include"B.H"
#include"A.H"
出现了这样的情况编译器就会发出错误。提示各种奇怪的错误。
解决这种情况C++有专门的方法,那就是 前置声明(forward declaration) 。就是先引入类名不定义实体。具体解决方法如下

A.h中

class CB;

class CA

{

CB* m_pb;

};

A.cpp中

#include"A.H"

#include"B.H"


B.h中

class CA;

class CB

{

CA* m_pa;

};

B.cpp中

#include"B.H"

#include"A.H"


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值