类被重复定义怎么办?

觅食的猫猫 2011-09-04 11:40:02
1类派生2类,2类派生3类

然后
3个类的声明分别放在3个头文件里,3个类的定义分别放在3个.cpp文件里

main函数放在main.cpp里

我在2类的声明中加了#include 1.h

3类中加了#include 2.h

main中有1.h 2.h 3.h都包含进去了,于是1类被重复定义了2次,2类被重复定义了1次

如果main中不包含1.h 2.h,就会出好多错误。

我记得有个条件编译能做到来,但是我还是弄不出来...
...全文
162 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
leer168 2011-09-04
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 jackyjkchen 的回复:]

你是说类似这样的?

#ifndef _MERGESORT_H_
#define _MERGESORT_H_

#endif
[/Quote]

++
112 2011-09-04
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 lm2302293 的回复:]
我靠,万恶的C++!四年没用过了。
做一下下面的尝试:
在1.h中加上 #define head1 1,
在2.h里加上 #define head2 2,
去掉main中的#include 1.h、#include 2.h,在main中加上
#ifndef head1
#include 1.h
#endif
#ifndef head2
#include 2.h
#endi……
[/Quote]不知道允不允许这么做哦,楼主给个话。
112 2011-09-04
  • 打赏
  • 举报
回复
我靠,万恶的C++!四年没用过了。
做一下下面的尝试:
在1.h中加上 #define head1 1,
在2.h里加上 #define head2 2,
去掉main中的#include 1.h、#include 2.h,在main中加上
#ifndef head1
#include 1.h
#endif
#ifndef head2
#include 2.h
#endif

注:我是Java程序员,C++很久没用过了。难道C++没有自己判断是否重复包含的功能吗?
shexinwei 2011-09-04
  • 打赏
  • 举报
回复
使用预编译命令防止重复包含:

//1.h中添加如下代码
#ifndef 1_H
#define 1_H
······
·你的代码·
······
#endif


//2.h中
#ifndef 2_H
#define 2_H
······
·你的代码·
······
#endif

//3.h中
#ifndef 3_H
#define 3_H
······
·你的代码·
······
#endif

quwei197874 2011-09-04
  • 打赏
  • 举报
回复
用条件编译
jackyjkchen 2011-09-04
  • 打赏
  • 举报
回复
另外,头文件尽量只写声明,不要定义
jackyjkchen 2011-09-04
  • 打赏
  • 举报
回复
你是说类似这样的?

#ifndef _MERGESORT_H_
#define _MERGESORT_H_

#endif

64,642

社区成员

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

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