already define的解决方法

ncy_wisdom 2009-04-15 08:20:00
我老是遇到already define的情况,不知怎样安排头文件才会避免此错误的发生啊?
我知道可以用
#ifndef __XXX_H
#define __XXX_H
……
#endif
的方法防止重定义,但是还是没有解决问题,我现在举个例子,希望各位高手能给个答复:

假设: b类从a类派生,c类中用到a和b的对象,在a,b,c的头文件中都要用到c.h,d.h的库文件,global.h中放着所有的全局变量和全局函数,不知我该如何组织a.h,b.h,c.h,d.h,global.h,谢谢诸位了...
...全文
938 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ncy_wisdom 2009-04-17
  • 打赏
  • 举报
回复
问题解决了,是因为把成员函数的实现也放在头文件中,导致多次引用,呵呵,给分...
goodname 2009-04-15
  • 打赏
  • 举报
回复
要处理好c和a的关系
ncy_wisdom 2009-04-15
  • 打赏
  • 举报
回复
我试试啊
mengde007 2009-04-15
  • 打赏
  • 举报
回复
怎么这么麻烦啊;如果向避免重复包含的话;那就直接在.cpp;即实现文件里面包含一次就行了;
scott_2009 2009-04-15
  • 打赏
  • 举报
回复
首先库文件c.h和d.h因为他们不容易改变,可以放到stdafx.h中做成预处理头文件。所有文件都应该包含这个stdafx.h头文件。
为了减少头文件的耦合度最好在c类中不要使用a和b的对象,而是使用a和b的对象的引用或指针,这样就可以在c.h中使用先前声明,在c.cpp中包含b.h和a.h。
既然b类是a类的派生类,那么b.h必须包含a.h。global.h是全局变量和全局函数,那么就在使用它的.cpp文件中包含就可以了。

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧