指標指向class問題,相互include

stone886 2007-05-03 08:09:58
C.h 的內容
#include "b.h"
#ifndef C_H
#define C_H
class C
{
private:
B *pB;
public:
C(){pB=NULL;}
void AddB(B &b)
{
pB = &b;
}
void testC(int i)
{
if(pB)
cout<<pB->testB (i);
}
};

#endif

B.h的內容
#ifndef BB
#define BB
#include "C.h"

class B
{
public:
C m_c;
int ib;
B(){ib=2;}

int testB(int j)
{
j=j+ib;
return j;
}

int testC(int j)
{
m_c.testC (4);
}
};
#endif

main.cpp的內容
#include <iostream>
using namespace std;
#include "b.h"
#include "c.h"

main()
{
int i=20;
B bb;
bb.testB(i);
C cc;
cc.AddB(bb);
cc.testC(30);

}

請問像這樣指標指向產生自己class的問題,是否能決定
...全文
167 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
sungengyu 2007-05-04
  • 打赏
  • 举报
回复
C 只是用到 B 的指针和引用,并不需要B的大小。所以,在C的声明前声明B(声明,不是定义)就可以了。
lightnut 2007-05-03
  • 打赏
  • 举报
回复
把C的声明(c.h)和实现(c.cpp)分开, 在c.h中使用forward declaration:

C.h 的內容
#ifndef C_H
#define C_H

//forward declaration
class B;

class C
{
private:
B *pB;
public:
C();
void AddB(B &b);
void testC(int i);
};

#endif

//c.cpp file
#include "b.h"
#include "c.h"

C::C()
{
....
}

void C::AddB(B &b)
{
.....
}

void C::testC(int i)
{
}


65,213

社区成员

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

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