LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1062|回复: 7

c++中头文件的互相包括

[复制链接]
发表于 2006-4-29 11:33:17 | 显示全部楼层 |阅读模式
最近遇到这么一个问题:

我有两个class, class a 和class b, class a 放在 a.h和a.cpp,class b 放在b.h和b.cpp.

在a.h里面的includ是这样的:
#include "b.h"

在b.h里面的includ是这样的:
#include "a.h"

这样的互相包括是否合法?我在编译的时候无法通过,总是说在b.cpp里的a的object没有声明。
我应该怎么解决这个问题?
发表于 2006-4-29 11:51:17 | 显示全部楼层
加上including guard,能够避免多次引用。如在a.h中:
#ifndef A_H
#define A_H

...

#endif
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-4-29 16:37:33 | 显示全部楼层
我已经在两个.h文件中加入了,可是还是有同样的问题
回复 支持 反对

使用道具 举报

发表于 2006-4-29 18:17:45 | 显示全部楼层
在a.h中加:
#ifndef A_H
#define A_H

...

#endif
在 b.h 中加:
#ifndef B_H
#define B_H

...

#endif
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-4-29 20:38:47 | 显示全部楼层
我就是这么做的啦。还是有这个问题。
回复 支持 反对

使用道具 举报

发表于 2006-4-29 21:52:40 | 显示全部楼层
是不是有交叉引用的情况?
那就采用前置声明:
class a;
class b;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-4-30 13:08:32 | 显示全部楼层
是有交叉引用的情况, 我在试试
回复 支持 反对

使用道具 举报

发表于 2006-4-30 14:13:19 | 显示全部楼层
还有就是如果用到聚合的,会有问题
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表