类中的成员对象,它将其称为parential构造函数

时间:2012-07-19 13:18:02

标签: c++ class object constructor member

在我的.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()
    {
    //..
    };

我搞砸了我试图在这里发布的前一个测试案例,对此我很抱歉。我想我不太明白那里发生了什么。我假设Cbeckhoff_frontendDlg启动了pialntial CDialogEx-构造函数,但我想开始自己的构造函数测试。这可能吗?

2 个答案:

答案 0 :(得分:0)

如果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) {}

编辑:至于分号,你不应该在方法体后使用分号:

class Foo {
    Foo() {
        // ...
    } // <- no semicolon

    void bar() {
        // ...
    } // <- no semicolon
}; // <- at the end of a class you need a semicolon

答案 1 :(得分:0)

如果我理解你的代码正确,你的Modul类有一个构造函数,它接受一个Cbeckhoff_frontendDlg *的参数,它有一个Modul类型的成员。 你有没有在你的Modul.h文件中声明Cbeckhoff_frontendDlg类?

编辑 再看一下你的代码,我想你还没有看到一些错误。你说主类没有编译,因为modul是未定义的。我原本以为模块中也会出现编译错误,说Cbeckhoff_frontendDlg没有定义。因此,您可能没有编译Modul文件, OR 'Modul.h'文件没有备用构造函数的声明。
如果我是你,我会仔细检查你认为编译的所有东西是通过干净的构建来编译的。