调用其父构造函数的类中的成员对象
Member object in a class which calls it parential constructor
在我的.h中,我有这样的东西:
class Cbeckhoff_frontendDlg : public CDialogEx
{
// construction
public:
Cbeckhoff_frontendDlg(CWnd* pParent = NULL);
//...
//this is the member object I want to create
Modul test;
};
我的.cpp看起来是这样的:
Cbeckhoff_frontendDlg::Cbeckhoff_frontendDlg(CWnd* pParent /*=NULL*/)
: CDialogEx(Cbeckhoff_frontendDlg::IDD, pParent)
{
//..
};
//and should look like this:
Cbeckhoff_frontendDlg::Cbeckhoff_frontendDlg(CWnd* pParent /*=NULL*/)
: CDialogEx(Cbeckhoff_frontendDlg::IDD, pParent),test()
{
//..
};
我把以前试图在这里发布的测试用例搞砸了,对此我很抱歉。我想我不太明白那里发生了什么。我假设Cbeckhof_frontendDlg启动父级CDialogEx构造函数,但我也想启动自己的构造函数测试。这可能吗?
如果Modul
有一个默认构造函数,而您不想使用另一个构造函数,那么以下内容就足够了:
Cbeckhoff_frontendDlg::Cbeckhoff_frontendDlg(CWnd* pParent /*=NULL*/)
: CDialogEx(Cbeckhoff_frontendDlg::IDD, pParent) {}
如果你想使用另一个构造函数(例如,一个接收整数的构造函数),你可以这样做:
Cbeckhoff_frontendDlg::Cbeckhoff_frontendDlg(CWnd* pParent /*=NULL*/)
: CDialogEx(Cbeckhoff_frontendDlg::IDD, pParent), test(some_integer) {}
EDIT:至于分号,您不应该在方法体后面使用分号:
class Foo {
Foo() {
// ...
} // <- no semicolon
void bar() {
// ...
} // <- no semicolon
}; // <- at the end of a class you need a semicolon
如果我正确理解你的代码,你的Modul类有一个构造函数,它接受一个参数Cbeckhof_frontendDlg*,它有一个Modul类型的成员。您是否在Modul.h文件中转发声明了Cbeckhof_frontendDlg类?
编辑再次查看您的代码,我认为您没有看到一些错误。您说主类没有编译,因为modul是未定义的。我本以为Modul中也会有编译错误,说Cbeckhof_frontendDlg没有定义。因此,您可能没有编译Modul文件,或者"Modul.h"文件中没有替代构造函数的声明。
如果我是你,我会仔细检查你认为正在编译的所有内容是否正在通过干净的构建进行编译。
相关文章:
- C++初始化类实例时隐式调用类成员的构造函数
- 类中的 Arduino 对象构造函数设置垃圾值
- 重载具有 2 个相同数据类型成员的构造函数
- 编译错误:临时对象构造函数中缺少参数
- 双指针在使用 new 时不调用对象构造函数
- 以支持继承的方式将自身shared_ptr添加到对象构造函数中的向量中
- 在创建对象向量时,不为每个对象唯一调用默认对象构造函数
- 初始化数据成员取决于构造函数中的条件
- 返回带有另一个类的数据成员的构造函数?遇到转换错误?
- GCC __attribute__((constructor)) 在对象构造函数之前调用
- 如何调用成员初始化器列表中参考成员的构造函数
- 自定义对象构造函数在循环外部循环
- 从全局对象构造函数停止监视器计时器
- 类成员在构造函数(线程)之后更改地址
- C++移动拥有指针成员的构造函数
- 引用成员到构造函数参数按值传递
- Arduino 上的 Sketch 停止在对象构造函数中执行
- 无法创建将 std::array<T, n> 作为类成员的构造函数
- 通过在引用线程对象来传递取消引用的“this”指针来在函数对象构造函数中创建线程是好是坏
- 成员对象构造函数和枚举