您的位置:首页 > 编程语言 > C语言/C++

C++ 头文件重复包含

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

例:

//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 的错误
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: