C++头文件重复包含

我一直没遇到过这种问题,挺奇怪,就好像A.h定义一个类,B.h中也定义一个,A.h中includeB.h,同时A类也定义了一个B类指针,同样B.hinclude了A.h,... 我一直没遇到过这种问题,挺奇怪,就好像A.h定义一个类,B.h中也定义一个,A.h中include B.h,同时A类也定义了一个B类指针,同样B.h include 了A.h,也有一个A类指针,当然头文件中有pragma once,但是编译时A.cpp说找不到B这个标识符,同样B中也找不到A,好像没包含一样
按理来说它不会出错啊,到底怎么回事啊。
另外,程序规模比较大,我也说不好是不是重复包含的原因,反正就是明明包含了,却找不到标识符
展开
 我来答
YOUZIibra
2012-03-04 · TA获得超过4212个赞
知道大有可为答主
回答量:4082
采纳率:66%
帮助的人:1085万
展开全部
你这种情况不叫重复包含,而叫循环包含,属于错误的写法。
A.h和B.h互相彼此包含,将导致编译器无休止的彼此包含,所以编译器会报错。

正确的做法是采用类前声明,方法避免循环包含。

具体做法如下:
A.h中写#include "B.h"
在A.h中可以直接定义类B的对象;比如 B m_b;
而在B.h中不能直接写#include "A.h"
应该写
class A;//声明B是一个外部类
Class B
{
A *pA;//声明一个指向A类对象的指针
};
然后在B.cpp中加入#include "A.h"
再在B的构造函数中,使用new方式对pA进行实例化,构建A的类对象,并通过pA在程序中访问。
追问
我了个去,居然好了,太感谢了!!!!
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式