-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 クラスには、Modul 型のメンバーを持つ Cbeckhoff_frontendDlg* の引数を取るコンストラクターがあります。Modul.h ファイルで Cbeckhoff_frontendDlg クラスを前方宣言しましたか?

編集コードをもう一度見てみると、いくつかのエラーは見られなかったと思います。modul が定義されていないため、メインクラスがコンパイルされていないとおっしゃっています。Cbeckhoff_frontendDlg が定義されていないという Modul のコンパイル エラーもあると思います。したがって、Modul ファイルをコンパイルしていないか、「 Modul.h」ファイルに代替コンストラクターの宣言が含まれていない可能性があり
ます。クリーンビルドを行っています。

于 2012-07-19T14:00:44.173 に答える