在告宽每个h文件中
比如 a.h中 有A类 使用B类
b.h中有B类 使用A类。
那么 在b.h的最上面 声明A类。
class A
就这一句。
在a.h中,最上面同样加
class B
这样就不会报错了。
不过 最好局搏设计成不互袜腊亮相包含的情况。
有些头文件重复包含只是增加了编译工作的工作量,不会引起太大的问题,仅仅是编译效率低一些有些头文件重复包含,会引起错误,比如在头文件中定义了全局变量(虽然这种方式不被推荐,但薯并确实是C规范允许的)
如果头文件被循环包含的话,那就看你的编译器了
有的会智能处理,和只include一次一样
有的会报错
有的干脆死锁,导致编译弊隐程序崩溃(这个 只有很低级的编译器才会出 现在几乎看不到租手厅了)
不管怎样,用ifnde xxx #define xxx或者其他方式避免头文件重复包含,只有好处 没有坏处
是一个很好的习惯
用前置声灶迟樱明
// A.hclass B
class A
{
protected:
B* b
}
// A.cpp
#include "A.h"
#include "B.h"
// B.h
class A
class B
{
protected:
A* a
}
//B.cpp
#include "B.h"
#include "隐丛A.h"
前置声明好处可以解决循环包含头文件
需要注意的是因为是前置声明,所以不能声明相应的对象,只能旦岩声明指针或引用
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)