在工程里面要相互调用类的头文件,相互调用就产生了一些问题,平时都使用#include "---.h",还有在类文件前面声明 要调用到的类,如
class classtouse;
想知道二者的区别!

解决方案 »

  1.   

    class classtouse; 只是申明个指针用,如果你在类体内定义对象,还是会报错的
      

  2.   

    前置声明
    class xx;
    xx* p;
    是没有问题的
    xx o;就不行,你定义对象的时候得知道对象的内存布局,而指针不需要互相包含就得使用前置声明,定义成指针形式
      

  3.   

    class classtouse;//前置声明 
    #include "---.h"//包含
      

  4.   

    前置声明 
    class xx; 
    xx* p; 
    是没有问题的 
    xx o;就不行,你定义对象的时候得知道对象的内存布局,而指针不需要 互相包含就得使用前置声明,定义成指针形式
      

  5.   

    其实我不太清楚你说的意思,我猜大概有两种情况:
    1:头文件重叠包含的问题
     这样情况就仿照vc固有的方法(比如你的文件为test1.h,test1.cpp)
    只需在test1.h里加入:
    #ifndef test_H
    #define test_H#if _MSC_VER > 1000
    #pragma once
    #endif // _MSC_VER > 1000
    class CTest
    {
    ....
    };
    #endif
    一切就ok
    2:两个类相互包含的问题,类A里包含有类B的实例,而类B里包含有类A的实例
    这种情况,你用指针就迎刃而解。
      

  6.   

    前置声明只是告诉编译器这个类型有定义,但是你要用它声明对象就有问题了,只能定义对象指针,
    而include,则是把头文件全部移到使用include的地方,相当于在此处重新声明一样,所以可以随便使用。