首页 > 解决方案 > MFC C++ 类成员变量,使用带参数的构造函数

问题描述

这是 MFC C++(不是 C++ 0x11)。我有一个类,它有一个 CDerivedComboBox 的成员变量,称之为 CMyForm。我想为 CDerivedComboBox 创建一个构造函数,它传入一个参数,所以当我声明它时,我可以传递一个标志,也可以不传递。

例如在 .h 文件中,两个构造函数

CDerivedComboBox();
CDerivedComboBox(bool specialFlag);

添加该构造函数实现时它编译得很好,但是在我使用它的类中,我无法弄清楚如何实际创建一个调用该构造函数的方法。这在 C++/ 中是不可能的吗?

CDerivedComboBox combo; // works
CDerivedComboBox comboParam(true); // does not work

标签: c++mfc

解决方案


CDerivedComboBox 应该是您的 CMyForm 的成员。看来您想在运行时为 CDerivedComboBox 动态调用不同的 ctor。因此,我建议将成员设置为指向 CDrivedComboBox 的指针:

class CMyForm
{
CDerivedComboBox *m_pMyCombo;
}

CMyForm::CMyForm(..., CWnd *pParent = NULL) : m_pMyCombo(NULL)
{

if (somecondition)
  m_pMyCombo = new CDerivedComboBox();
else  // use specialFlag
  m_pMyCombo = new CDerivedComboBox(specialFlag);
}

记得delete m_pMyCombo在 dtor 中!


推荐阅读