7

効果的な Java 2ed アイテム 2 から:

テレスコーピング コンストラクター パターン。必要なパラメーターのみを持つコンストラクター、単一のオプション パラメーターを持つ別のコンストラクター、2 つのオプション パラメーターを持つ 3 番目のコンストラクターなどを提供し、すべてのオプション パラメーターを持つコンストラクターで最高潮に達します。

C++で同じことができますか? 私はこのようなことを試しました:

MyClass::MyClass(QWidget *parent)
{   
    MyClass(NULL, NULL, NULL, parent);
}

MyClass::MyClass(QString title, QWidget *parent) 
{

    MyClass(title, NULL, NULL, parent);
}

MyClass::MyClass(QString title, QString rightButton, QWidget *parent)
{


    MyClass(title, NULL, rightButton, parent);
}



MyClass::MyClass(QString titleLabel, QString leftButtonLabel, QString rightButtonLabel, QWidget *parent)
: QWidget(parent)
{
      // construct the object
}

しかし、それは機能しません。ヒントはありますか?

私はC ++分野では本当に新しいので..初心者の質問で申し訳ありません

4

3 に答える 3

9

これは、C ++ 11では委任コンストラクターと呼ばれ、次のように実行されます。

MyClass::MyClass(QWidget *parent)
    : MyClass(NULL, NULL, NULL, parent)
{   
}

一方、お使いのバージョンは、すぐに破棄される一時的なものを生成します。

于 2012-07-31T20:46:06.463 に答える
6

最も簡単な方法は、コンストラクターのパラメーターに既定値を指定することです。

それがうまくいかない場合は、通常、Init各コンストラクターによって呼び出されるメソッドを作成して、コードが繰り返されないようにします。

于 2012-07-31T20:45:28.590 に答える
1
MyClass::MyClass(QWidget *parent)
{   
    MyClass(NULL, NULL, NULL, parent);
}

する必要があります

MyClass::MyClass(QWidget *parent) :
    MyClass(NULL, NULL, NULL, parent)
{   
}

于 2012-07-31T20:45:11.137 に答える