首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

类的互相包含解决方案

2012-02-27 
类的互相包含//classBclassA{private:Bb//B*b}classB{private:Aa}intmain(){AaBb}前置声明也不行,

类的互相包含
//class   B;
class   A
{
private   :
      B   b;
      //B*b;
};

class   B
{
private   :
      A   a;
};
int   main()
{
    A   a;
    B   b;
}
前置声明也不行,需要B的定义。怎样解决呢?

[解决办法]
保存引用或者指针
[解决办法]
//a.h
#include "b.h "

class A{
B* b;
};

//b.h
class A;
class B{
A* a;
};
[解决办法]
class B;
class A
{
private :
B *b;
};

class B
{
private :
A a;
};

[解决办法]
mark

[解决办法]
路过
[解决办法]
这种问题只能是A或者B中的一个包含另一个的指针或是引用来完成。
[解决办法]
概念上就是错的。A中有一个B,B中有一个A,A中又有一个B……这个递归是没有尽头的,A、B的大小变得无穷大。
[解决办法]
理论上不可以实现,这种设计思路有问题,要达到包含的目的一般使用指针来实现。

[解决办法]
递归

热点排行