在对话框程序中,
定义了一个基于CDialog 的类 CTestDlg在主对话框头文件中:
#include "TestDlg.h"public:
TestDlg *m_TestDlg;编译后:
Erro:
1. syntax error : missing ';' before '*'
2.'TestDlg' : missing storage-class or type specifiers
3.'m_TestDlg' : missing storage-class or type specifiers为什么定义一个对话框指针或将其设为成员变量(public: TestDlg m_TestDlg),都会出错呢???
应该如何定义?

解决方案 »

  1.   

    改为这样试下:CTestDlg *m_TestDlg;
      

  2.   

    但是将它在内部定义就没有问题了
    比如OnButton()
    {
    CTestDlg1 m_TestDlg1;
    m_TestDlg1.DoModal();
    }而我需要做的是定义两个对话框类,分别保存对方的对话框指针而相互调用
    需要在头文件中定义的。
      

  3.   

    改成
    public: 
    CTestDlg *m_TestDlg; 
      

  4.   

    解决方法为:
     在超前引用一个类之前,首先用一个特殊的语句说明该标识符是一个类名,即将被超前引用。其使用方法是:
                a)  用class ClassB;声明即将超前引用的类名
                b)  定义class ClassA
                c)  定义class ClassB;
                d)  编制两个类的实现代码。
         上述方法适用于所有代码在同一个文件中,一般情况下,ClassA和ClassB分别有自己的头文件和cpp文件,这种
    方法需要演变成:
                a) 分别定义ClassA和ClassB,并在cpp文件中实现之
                b) 在两个头文件的开头分别用class ClassB;和class ClassA;声明对方
                c) 在两个cpp文件中分别包含另外一个类的头文件
         NOTE:这种方法切记不可使用类名来定义变量和函数的变量参数,只可用来定义引用或者指针。  
      

  5.   

    解决方方法为:
    在超前引用一个类之前,首先用一个特殊的语句说明该标识符是一个类名,即将被超前引用。其使用方法是:
                a)  用class ClassB;声明即将超前引用的类名
                b)  定义class ClassA
                c)  定义class ClassB;
                d)  编制两个类的实现代码。
        上述方法适用于所有代码在同一个文件中,一般情况下,ClassA和ClassB分别有自己的头文件和cpp文件,这种
    方法需要演变成:
                a) 分别定义ClassA和ClassB,并在cpp文件中实现之
                b) 在两个头文件的开头分别用class ClassB;和class ClassA;声明对方
                c) 在两个cpp文件中分别包含另外一个类的头文件
         NOTE:这种方法切记不可使用类名来定义变量和函数的变量参数,只可用来定义引用或者指针。