C++中头文件设计
admin
2023-02-20 15:20:07
0

对于小工具程序而言,用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。

相关内容

热门资讯

浏阳爆炸烟花厂800亩厂房被夷... 湖南长沙市浏阳市华盛烟花制造燃放有限公司5月4日发生爆炸,截至目前已造成26人遇难、61人受伤。凤凰...
天然气炉子火太小是什么原因 天然气炉子火太小是什么原因要先排除是因为燃气灶之外的第三方原因造成的,比如说,使用的时候是用气高峰期...
煤气灶电池几号 不同型号的煤气灶可能需要不同型号的电池,常见的煤气灶电池型号有 1 号、2 号、5 号和 7 号。如...
煤气灶烧一会自动熄火两灶多会熄... 原因可能是燃起不足,供应不了两个煤气灶,可以关闭一个,若是一个也供应不上就需要补充煤气了;原因可能是...
燃气灶成黄火是什么原因 燃气灶成黄火的原因有很多,主要是以下几个方面:1. 气体供应不足:使用燃气灶时,如果气体供应不足,即...
燃气灶风门调到最大还是黄火怎么... 原因是燃气质量不稳定,燃气灶一次性空气量供给不足,导致燃烧不良生成黄焰火,还有可能是因为燃气灶的风门...
以青春之我 创青春中国 湖北武汉市,光谷实验室研究员张静宇聚力飞秒激光前沿赛道,突破技术壁垒,提升单张玻璃光盘的理论容量; ...
追觅科技全球发布会周收官 集中... 美国时间4月27日至30日,以“DREAME NEXT”为主题的追觅科技全球发布会周在硅谷收官。 四...
后退的阶梯:我在互联网公司的1... 如果说,张小满的前一本书《我的母亲做保洁》提供给公众一个刻下罕见的“劳动者视角”,那么此番《大厂小民...