网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

C++中头文件设计

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


文章名称:C++中头文件设计
分享地址:http://bjjierui.cn/article/pogjgj.html

其他资讯