头文件重复包含的问题,怎么解决

xiayu0912 2009-03-20 02:21:22
我有三个类,分别是A,B,C,
B,C两个类里包含A类成员
下面是这三个类,:

//file A.h

class A
{
public:
A();
};

//file A.cpp

include "A.h"
A::A()
{
.....
}

//file B.h

#include "A.h"
class B
{
private:
A Aobj;
public:
B();
};

//file B.cpp

#include "B.h"
B::B()
{
.....
}

//file C.h

#include "A.h"
class C
{
private:
A Aobj;
public:
C();
};

//file C.cpp

#include "C.h"
C::C()
{
....
}

//file main.c
#include "B.h"
#include "C.h"

int main()
{
B Bobj;
C Cobj;
}

编译的时候会出现error: redefinition of ‘class A’这样的错误
该怎么办?
...全文
155 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
f22fbi 2009-03-20
  • 打赏
  • 举报
回复
#ifndef XXXX_H
#define XXXX_H

#endif
或者
#pragam once
lizhizhe2000 2009-03-20
  • 打赏
  • 举报
回复
接分
qq675927952 2009-03-20
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 tangshuiling 的回复:]
C/C++ code
#ifndef _A_H
#defind _A_H
//file A.h

class A
{
public:
A();
};

//file A.cpp
#endif
加入: #ifndef #define #endif的预编译指令


[/Quote]

up

#pragam once 这个也行
solo_coder 2009-03-20
  • 打赏
  • 举报
回复

我还以为是循环引用了头文件呢....
要是循环引用了头文件,那么可以使用指针和前向声明来解决。
一线coder 2009-03-20
  • 打赏
  • 举报
回复
#ifndef _A_H
#defind _A_H
//file A.h

class A
{
public:
A();
};

//file A.cpp
#endif
加入: #ifndef #define #endif的预编译指令


支持!!!!!
speeder53 2009-03-20
  • 打赏
  • 举报
回复
mk
mengde007 2009-03-20
  • 打赏
  • 举报
回复
#pragam once
pengzhixi 2009-03-20
  • 打赏
  • 举报
回复
#ifndef X_H
#define X_H
//x.h文件的代码
#endif
downmooner 2009-03-20
  • 打赏
  • 举报
回复
楼上2种
rabbitlzx 2009-03-20
  • 打赏
  • 举报
回复
//file A.h

#pragma once

class A
{
public:
A();
};
tangshuiling 2009-03-20
  • 打赏
  • 举报
回复

#ifndef _A_H
#defind _A_H
//file A.h

class A
{
public:
A();
};

//file A.cpp
#endif
加入: #ifndef #define #endif的预编译指令

64,632

社区成员

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

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