我创建了两个类:ClassA和ClassB,头文件分别为classA.h和classB.h
在ClassA中,我include了classB.h,在ClassB中,我也include了classA.h,结果导致了ClassA(一个对话框类)不识别它的对话框的IDD,
就是“enum { IDD = IDD_SERVER_DIALOG”这句话报错,“error:undeclared identifier”和“expected constant expression”
如果去掉其中的一个include头文件,就一切正常了
请问,怎么解决啊?多谢!!!

解决方案 »

  1.   

    把include了classA.h改成class classA;

    class classA;
    class ClassB
    {
      //ClassB类};
    行不行?
      

  2.   

    是不是你没有包括资源?
    #include "resource.h"
      

  3.   

    to wudhu:不include classA.h,怎么能够使用"class ClassA"呢,明显不行啊,我理解错了?拜托再指正,谢谢to bluebohe:我试了,也不行,thanks
      

  4.   

    你把#include "resource.h"防在两个文件的#include"stdafx.h"文件之下呢,别太靠下
      

  5.   

    你看着:
    #include "classA.h"
    class classB : public....class classB;
    class classA :public....
      

  6.   

    首先要明白.h文件是不会被编译的,他只会被分析。
    所以,如果在一个头文件中引用了另一个类,如果不需要类定义,就只用简单的声明。
    class A
    class B
    {
        A* m_pa;      //不需要A的定义,不用包含头文件
        A  m_a        //需要A的定义,要包含头文件
    };
      

  7.   

    //classA.h
    #ifndef _CLASSA_H_
    #define _CLASSA_H_#include "classb.h"
    class classB;
    class classA
    {
        //...
    }
    #endif//classB.h
    #ifndef _CLASSB_H_
    #define _CLASSB_H_#include "classa.h"
    class classA;
    class classB
    {
        //...
    }
    #endif
      

  8.   

    自己定义的两个类,在头文件中如果进行了声明,那么在cpp文件中,如果一个类使用了另一个类的话,是不是好像不需要再进行如下声明了?class A
    class B
    {
        A  m_a        //需要A的定义,要包含头文件
    };
      

  9.   

    多谢诸位,我没有挨个尝试,
    不过bluebohe(薄荷)的方法是可以的,能给解释一下吗?多谢
      

  10.   

    就是你在头文件里用了resource.h里面的定义,虽然.h文件是不会被编译,但是当它被包括到其他文件中时,如果其他的文件没有包括resource.h,就找不到字符串了