Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1813421
  • 博文数量: 159
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 5649
  • 用 户 组: 普通用户
  • 注册时间: 2013-01-23 18:56
个人简介

将晦涩难懂的技术讲的通俗易懂

文章分类

全部博文(159)

文章存档

2019年(13)

2018年(19)

2017年(9)

2016年(26)

2015年(18)

2014年(54)

2013年(20)

分类: C/C++

2014-05-28 23:17:22

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

问题描述:

        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;  

}  

阅读(4885) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~
评论热议
请登录后评论。

登录 注册