一个实现两个类互相调用,编译出错why??
#include"b.h"
class b;
class a
{
b m_b;
};
#include"a.h"
class a;
class b
{
a *m_a;
};
编译提示不认识 b m_b;
问题点数:40、回复次数:10Top
1 楼robertxiao(我心飞翔)回复于 2003-06-03 09:04:33 得分 0
你这是两文件还是一文件啊?
如果在同一个文件类
class b;
class a
{
b m_b;
};
class b
{
a *m_a;
};
Top
2 楼zfive5(醉马不肖)回复于 2003-06-03 09:05:51 得分 0
b *m_b;
Top
3 楼yongdu()回复于 2003-06-03 09:06:35 得分 0
去掉#include"a.h"行Top
4 楼nava(探雪)回复于 2003-06-03 09:12:37 得分 10
呵呵~见zfive5(醉马不肖)Top
5 楼zhaolaoxin()回复于 2003-06-03 09:13:41 得分 0
只要注意两个头文件的包含顺序就可以解决,避免相互嵌套包含。Top
6 楼ruihuahan(飞不起来的笨鸟)回复于 2003-06-03 09:20:24 得分 20
#include"b.h"
class b;
class a
{
b m_b;
};
没有定义完整的class b,不能定义类b的实例,只能定义class b的指针。 如楼上zfive5(醉马不肖)所说。Top
7 楼aids001(菜鸟)回复于 2003-06-03 09:23:02 得分 0
a,b不在同一个文件内
“相互嵌套包含“大虾可不可以详细解释一下Top
8 楼JerryGR(紫咖啡)回复于 2003-06-03 09:27:50 得分 0
#include a 和#include b存在相互包含的错误
将#include a去掉就可以了。或者将#include a #include b去掉,将b m_b改成b* m_b也可以
!
编程快乐
Top
9 楼ifromheaven(天堂鸟)回复于 2003-06-03 09:45:40 得分 0
非常典型的头文件嵌套包含,a.h包含b.h,b.h里又要包含a.h,然后a.h中又会包含b.h…………
这就是头文件嵌套包含。
可以将#include a去掉
或改成b * m_b;Top
10 楼ifromheaven(天堂鸟)回复于 2003-06-03 09:49:49 得分 10
嵌套包含就是你要是在a.h中包含b.h,b.h中包含a.h,这样两个头文件编译时就会出现a.h中有b.h,因为b.h中有a.h,所以那个a.h中又要包含一个b.h…………如此循环,周而复始。
将#include b去掉,将b m_b改成b* m_b也可以Top




