C++中两个类互相包含的策略

 一、问题描述
   
    A类包含B类的实例,而B类也包含A类的实例
   
    二、求解策略
   
    1)错误的解法
   
    A文件包含B,而B文件又包含A文件,这样就形成死循环
   
    #include “B.h”
   
    class A
   
    {
   
    int i;
   
    B b;
   
    };
   
    #include “A.h”
   
    class B
   
    {
   
    int i;
   
    A   a;
   
    };
   
    2)正确的写法以及注意事项
   
    1)主函数只需要包含b.htbw就可以,因为b.h中包含了a.h
   
    2)a.h中不需要包含b.h,但要声明class   b.在避免死循环的同时也成功引用了b
   
    3)包含class  b 而没有包含头文件 “b.h”,这样只能声明  b类型的指针!!!!而不能实例化!!!!
   
    a.h:
   
    #include <iostream>
   
    using namespace std;
   
    class b;
   
    class a
   
    {
   
    public:
   
    b *ib;
   
    void putA()
   
    {
   
    cout《“这是A类”《endl;
   
    }
   
    };
   
    b.h:
   
    #include <iostream>
   
    #include “a.h”
   
    using namespace std;
   
    class b
   
    {
   
    public:
   
    a ia;
   
    void putB()
   
    {
   
    cout《“这是B类”《endl;
   
    }
   
    };
   
    主函数
   
    #include <stdio.h>
   
    #include <tchar.h>
   
    #include “b.h”
   
    int _tmain(int argc, _TCHAR* argv[])
   
    {
   
    b B;
   
    B.putB();
   
    B.ia.putA();
   
    getchar();
   
    return 0;
   
 

你可能感兴趣的:(C++)