我用了一种嵌套的方式定义了3各类如下:
在A.H中
#include "B.H"
class A
{ public:  void dealdata();
           B m_b; 
  ....}
在B.H中
#include "C.H"
class B
{
  C m_c;
 .....}在C.H中
class A ;
class C
{public:  BOOL passdata(A* p_a1)
 
 }
在C.cpp中
C::passdata(A* p_a1)
{
 A* pa2;
 pa2=p_a1;
 writefile(pa2->dealdata());
 }
应用时:
A objectA;
objectA.m_b.m_c.passdata(&objectA);编译出错:
use of undefined type 'A'是否在两个类中互为成员声明有错? 该如何声明??

解决方案 »

  1.   

    class B;
    class C;class A
    { public:  void dealdata();
               B m_b; 
      ....
    };class B
    {
      C m_c;
     .....
    };class C
    {public:  BOOL passdata(A* p_a1)
     
     };C::passdata(A* p_a1)
    {
     A* pa2;
     pa2=p_a1;
     writefile(pa2->dealdata());
     }
      

  2.   

    在C.cpp中加入:
    #include "A.H"
      

  3.   

    在A.H 的头和尾加#ifndef __A_Header_Included__
    #define __A_Header_Included__
    ...
    #endif // end up this header
      

  4.   

    以前有个帖子也问这个,可以找找。我一直认为相互包含不行,不过有人说mfc可以,利用宏,具体不清楚
      

  5.   

    提供一点改进意见,希望有所帮助:
    1。在C.h中加入:
    #include "A.H"
    2. 在A.H、B.H、C.H中的三个文件分别加入宏,比如
    #ifndef __A_H__ //文件头
    #define __A_H__
    .....
    #endif    //文件末
    3.或者在头文件中加入
    #param (ONCE)
      

  6.   

    在C.cpp中
    #include "A.H"
      

  7.   

    有错的那个文件的.h中加如class B;
    .cpp包含 b.h试试
      

  8.   

    #ifndef __A_H__ //文件头
    #define __A_H__
    .....
    #endif    //文件末
    这样定义是什么意思?
    我试了大家建议的方法都不行!
      

  9.   

    第一步把A.H 改成:#ifndef __A_Header_Included__
    #define __A_Header_Included__
    #include "B.H"
    class A
    {
     public:  void dealdata();
               B m_b; 
      ....
    };
    #endif // end up this header
      

  10.   

    第二步,在C::passdata 函数前(C.cpp中)包含A.H,如下:...#include "A.H"
    C::passdata(A* p_a1)
    {
     A* pa2;
     pa2=p_a1;
     writefile(pa2->dealdata());
    }...
      

  11.   

    好像记得不能相互包含头文件不行
    不过cpp就可以