//在同一头文件里声明两个类,类A用到类B,类B又用到类A,于是我
这么定义:class B;class A
{
   B m_member1;
}class B
{
   A m_member2;
}可编译通不过,如何是好?
error C2079: 'm_member1' uses undefined struct 'B'

解决方案 »

  1.   

    用指针方便点
    class B
    {
      void *m_lpmember2;
    };*.cpp中:
    #include "b.h"
    #include "a.h"
    使用 m_lpmember2 时强制转化为(A*)
      

  2.   

    用指针
    当编译器
    编译到
       B m_member1;时
    他需要知道 sizeof( m_member1 ) 的大小,以分配空间
    可是
    class B;  只是声明了,没有定义
    无法知道 sizeof ( m_member1  ) 的大小
    但是写成
       B* m_member1;
    此时可以知道 sizeof (  m_member1 ) 的大小 (=4)
    解决该问题
    只有期待编译器的升级
      

  3.   

    向前声明(forward declaration)只能用作指针。
    因为如果声明对象的话,是要实际分配内存的,没有定义的类对象编译器无法知道分配多少内存。