即使编译通过,你这样设计也有问题。
如果生成一个B对象,则死循环。
b创建a,a创建b,b创建a.....

解决方案 »

  1.   

    这样试试文件 a.h
     
    class CA
    #include "b.h"
    //class CB;
    class CA  
    {
    public:
    CA();
    virtual ~CA();
    CB m_b;
    };文件 b.h class CB;
    #include "a.h"
    //class CA;
    class CB  
    {
    public:
    CB();
    virtual ~CB();
    CA m_a;
    };我要说一点的就是,像你这样头文件相互包含,程序稍大一些以后,可能会很不好办。
      

  2.   

    用指针.文件 a.h 
    #include "b.h"
    class CB;
    class CA  
    {
    public:
    CA();
    virtual ~CA() { delete m_b; }
    CB* m_b;
    };文件 b.h 
    class CA;
    class CB  
    {
    public:
    CB();
    virtual ~CB() { delete m_a; }
    CA* m_a;
    };CA, CB 的构造函数不能写在头文件里,应该写在CPP里。
    CA::CA()
    {
        m_b = new CB;
    }CB::CB()
    {
        m_a = new CA;
    }