Chinaunix首页 | 论坛 | 博客
  • 博客访问: 6319423
  • 博文数量: 2759
  • 博客积分: 1021
  • 博客等级: 中士
  • 技术积分: 4091
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-11 14:14
文章分类

全部博文(2759)

文章存档

2019年(1)

2017年(84)

2016年(196)

2015年(204)

2014年(636)

2013年(1176)

2012年(463)

分类: C/C++

2014-05-31 11:03:39

两个类相互包含的求解策略

问题描述:

        A类包含B类的实例,而B类也包含A类的实例

 

求解策略

 

错误的解法

 A文件包含B,而B文件又包含A文件,这样就形成死循环

#include "B.h"  

  

class A  

{  

    int i;  

    B b;  

};  

  

#include "A.h"  

class B  

{  

    int i;  

    A   a;  

};  

正确的写法以及注意事项 

     1)主函数只需要包含b.h 就可以,因为b.h中包含了a.h

     2a.h中不需要包含b.h,但要声明class  b在避免死循环的同时也成功引用了b

     3)包含class  b 而没有包含头文件 "b.h",这样只能声明  b类型的指针!!!!而不能实例化!!!!

            

 

 a.h:

#include   

using namespace std;  

  

class b;  

  

class a  

{  

public:  

    b *ib;  

    void putA()  

    {  

        cout<<"这是A"<

    }  

  

};  


b.h:

#include   

#include "a.h"  

  

using namespace std;  

class b  

{  

public:  

    a ia;  

    void putB()  

    {  

        cout<<"这是B"<

    }  

  

};  


主函数

#include   

#include   

#include "b.h"  

int _tmain(int argc, _TCHAR* argv[])  

{  

    b B;  

    B.putB();  

    B.ia.putA();  

    getchar();  

    return 0;  

}  

阅读(659) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~