C++ 头文件重复包含

当头文件重复包含时,常常会遇到编译不过的情况,这时,只需要预先定义一下某变量或类即可:


例:


//a.h

#include "b.h"

class CTestA

{

public:

    CTestB    m_b;        //error

}


//b.h

#include "a.h"

class CTestB    

{

public:

    CTestA    m_a;        //error

}


正确的做法是:

//a.h

#include "b.h"

class  CTestB;

class CTestA

{

public:

    CTestB    *m_b;        //改成指针类型

}


//b.h

#include "a.h"

class CTestA;

class CTestB    

{

public:

    CTestA    *m_a;        //改成指针类型

}


PS:

    要给m_b分配内存只能在a.cpp的构造函数中进行,而不能在头文件中直接实现!!

例:

   

//a.h

#include "b.h"

class  CTestB;

class CTestA

{

public:

    CTestB    *m_b;        //改成指针类型

    CTestA(){m_b=new CTestB;}     //error C2036: ****: 未知的大小

}

同理,要对CTestB进行某操作,而此操作必须先知道sizeof(CTestB)的大小时,都必须要在

相应的*.cpp中进行实现!如 m_b++;则同样会报 error C2036  的错误





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值