关于2个C++文件,相关引用头文件的时候!!!出现的问题

大大啊 2012-11-15 01:32:26
有2个 文件

A.h B.h
A.cpp 和 B.cpp

我在 A.h 增加一句#include "B.h"

并且在A.cpp 使用A的对象

CB cb;
cb.fun();


现在将 B.h 增加一句include "A.h"
并且在B.cpp 使用A的对象

CA ca;
ca.fun();



以上好像相互用于头文件会出错!! 不知道具体什么原因


只要A.h 的头文件中#include "B.h"
放到 A.cpp 文件上面引用。。 好像就不报错了!!
...全文
172 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
benbendeda 2012-11-15
  • 打赏
  • 举报
回复
一:头文件里面不要放全局变量,只放类的声明和函数的声明 二:在每个头文件加上#ifndef _XXX_H_ #define _XXX_H_ #endif是一个好习惯 三:不要在头文件里面include头文件,在cpp里面include 四:A.ccp里面要用到B.cpp里的变量,用extern 如果不遵循上面的几点,很容易报错。 错误类型一:X.h里面的全局变量缺少什么什么 错误类型二:重定义 上面是两个最常见的错误。
wumn29 2012-11-15
  • 打赏
  • 举报
回复
你在cpp里面include不就没事了? 头文件里面如果有声明 extern class A也可以
_暮落_ 2012-11-15
  • 打赏
  • 举报
回复
#ifndef _A_H #define _A_H #endif
大大啊 2012-11-15
  • 打赏
  • 举报
回复
#ifndef 这样 我也都加了。。。就是编译报错 很多以下错误!!! 错误 6 error C2143: 语法错误 : 缺少“;”(在“*”的前面) e:\mycode\c1\winnet\IocpServer.h 105 1 winNet 错误 8 error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int e:\mycode\c1\winnet\IocpServer.h 105 1 winNet 错误 14 error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int e:\mycode\c1\winnet\IocpServer.h 105 1 winNet
www_adintr_com 2012-11-15
  • 打赏
  • 举报
回复
循环引用当然要报错 想想你来设计编译器, 除了报错外你能怎么处理这种情况.
转角天边 2012-11-15
  • 打赏
  • 举报
回复
你申明冲突了
转角天边 2012-11-15
  • 打赏
  • 举报
回复
在A.h和B.h里面加上 #ifndef _A_H #define _A_H .. .. .. .. //a.h里面的内容 #endif b.h里面同样这样

64,654

社区成员

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

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