我在MFC doc / frame peoject(单文档,MFC,VC ++ 2010项目)中添加了一个额外的Dialog(TestDialog),TestDialog.h文件显示
class CTestDialog : public CDialogEx
{
DECLARE_DYNAMIC(CTestDialog)
public:
CTestDialog(CWnd* pParent = NULL); // standard constructor
virtual ~CTestDialog();
}
然后我添加了以下我将在TestDialog.h文件中使用的变量 公众:
BOOL m_x;
long m_Type
TestDialog.cpp文件显示
CTestDialog::CTestDialog(CWnd* pParent /*=NULL*/)
: CDialogEx(CTestDialog::IDD, pParent)
, testdlg(0)
{
}
CTestDialog::~CTestDialog()
{
}
现在我使用了一个适用于frame / doc文件的启动列表(在..Doc.cpp文件中声明 和.h文件中相应的变量,它完美地工作。但是每当我想在对话框中同样的东西时虽然可以从对话框中访问变量,但是我无法初始化变量值。所以..
我想在TestDialog.cpp文件中为m_x和m_Type添加初始化列表
:
m_x(FALSE)
m_Type(0)
我尝试添加如下
CTestDialog::~CTestDialog():
m_x(FALSE)
m_Type(0)
{
}
或
CTestDialog::CTestDialog(CWnd* pParent /*=NULL*/)
:m_x(FALSE),m_Type(0)
: CDialogEx(CTestDialog::IDD, pParent)
, testdlg(0)
{
}
但是没有一个工作,编译器认为initiazation列表只能在构造函数中声明。如何对此对话框的启动列表进行十分转换。
答案 0 :(得分:1)
您的对话框已有初始化列表,您只需添加以下更改:
CTestDialog::CTestDialog(CWnd* pParent /*=NULL*/)
: CDialogEx(CTestDialog::IDD, pParent)
, testdlg(0)
, m_x(FALSE)
, m_Type(0)
{
}
一般语法是:
CSomeClass::CSomeClass() : m_var1(1), m_var2(2), m_var3(3)
{
}
如果初始值设定项列表遵循:
之后的构造函数的定义,并且此示例中的变量名称 - m_var1
等 - 用逗号分隔,并在括号中包含初始值。与对话框一样,您也可以在初始化列表中包含基类构造函数。
对话框源代码中的布局只是将每个变量放在一个新行上。