温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

C++中头文件设计

发布时间:2020-07-09 09:50:46 来源:网络 阅读:246 作者:一杯开心茶 栏目:软件技术

对于小工具程序而言,用C++编写估计也就几个文件,此时很少设计头文件互相包含引发的编译出错问题。
但是当软件功能越来越多,功能越来越复杂,各模块之间的调用关系也越来越不明显,此时很有可能会出现A头文件包含B头文件,B头文件包含A头文件的情况,这种互相包含头文件会导致出现找不到编译类型的错误。
最简单的代码如下:
A.h如下

#include "B.h"
class A
{
    B b;
}

A.cpp如下

#include "A.h"
class A
{
     ...
}

B.h如下

#include "A.h"
class B
{
  A a;
}

B.cpp如下

#include "B.h"
class B
{
...
}

如果文件是上述这种情况,则编译出现找不到类型,因为头文件中A包含了B头文件,B中又包含了A头文件,这种循环包含会导致编译出错。

解决办法
解决办法采用前置声明。
改后代码如下
A.h如下

class B;
class A
{
    B b;
}

A.cpp如下

#include "A.h"
#include "B.h"
class A
{
     ...
}

B.h如下

class A
class B
{
  A a;
}

B.cpp如下

#include "B.h"
#include "A.h"
class B
{
...
}

如果想一劳永逸呢?
对于经常用到的模块的头文件,可以统一写一份前置声明文件,将常用的声明都写入这个头文件,比如叫做includeDeclare.h,然后将其实际的头文件都放入一个文件,比如includeHeaders.h中。这样后续其他地方使用的时候,只要在头文件中引入includeDeclare.h,在实现cpp文件中引入includeHeaders.h。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI