-2

在我的 .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 启动父级 CDialogEx- 构造函数,但我也想启动我自己的构造函数测试。那可能吗?

4

2 回答 2

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
于 2012-07-19T13:26:11.277 回答
0

如果我正确理解您的代码,您的 Modul 类有一个构造函数,该构造函数接受 Cbeckhoff_frontendDlg* 的参数,该参数具有 Modul 类型的成员。您是否在 Modul.h 文件中转发声明了 Cbeckhoff_frontendDlg 类?

编辑再次查看您的代码,我认为您还没有看到一些错误。你说主类没有编译,因为 modul 是未定义的。我原以为 Modul 中也会出现编译错误,说 Cbeckhoff_frontendDlg 没有定义。因此,您可能没有编译 Modul 文件,或者“Modul.h”文件中没有替代构造函数的声明。
如果我是您,我会仔细检查您认为正在编译的所有内容 IS 正在编译做一个干净的构建。

于 2012-07-19T14:00:44.173 回答