我现在想把Wizard生成的“关于”对话框变成一个无模式的。代码如下:
class CAboutDlg;class CExModalessApp : public CWinApp
{
public:
CExModalessApp();
CAboutDlg* m_paboutDlg;
......
};
......
CExModalessApp::CExModalessApp()
{
m_paboutDlg=new CAboutDlg;
}
int CExModalessApp::ExitInstance() 
{

if (m_paboutDlg!=NULL) delete m_paboutDlg;
return CWinApp::ExitInstance();
}void CExModalessApp::OnAppAbout()
{ if (m_paboutDlg->GetSafeHwnd()==0)
m_paboutDlg->Create(IDD_ABOUTBOX);
m_paboutDlg->ShowWindow(SW_SHOW);}但是在编译的时候老是提示m_paboutDlg=new CAboutDlg;
这一行有错,显示的信息为 no appropriate default constructor available
应该如何解决了?
我原来以为是在CAboutDlg的Constructor中没有加上Create的缘故,但是修改后还是有问题。还请高手指点一二。

解决方案 »

  1.   

    把CAboutDlg的定义移到CExModalessApp::CExModalessApp()前面就可以了new时不是前置声明就可以的了,CAboutDlg的定义必须可见
      

  2.   

    是你的CAboutDlg构造函数有错误了。应该定义为 
    CAboutDlg::CAboutDlg()
    {
      ...
    }
      

  3.   

    嘿嘿,按照 DentistryDoctor修改一下就可以了。我试了试重新定义构造函数,结果仍然报错。除了
    “no appropriate default constructor available”之外,还提示
    “_thiscall CAboutDlg::CAboutDlg(void)' already has a body”。
    应该怎样定义才能解决了?