1

タイトルを自由に編集してください。これをどのように表現するかわかりません。

別のクラスでインスタンス化されたときに、デフォルト以外のクラスのコンストラクターを呼び出す方法を理解しようとしています。私が言いたいのはこれです...

class A
{
public:
    A(){cout << "i get this default constructor when I create a B" << endl;}
    A(int i){cout << "this is the constructor i want when I create a B" << endl;}
};

class B
{
    A a;
};

int main()
{
    B *ptr = new B;
    return 0;
}

いくつか検索しましたが、やりたいことがわかりません。たぶんBの宣言でできると思ったのですA a(5)が、うまくいきません。

ありがとう

4

1 に答える 1

10

コンストラクターの初期化リストを使用してそれを行うことができます(この質問とそれに類似した他の質問も参照してください)。

これは、次のコンストラクターを手動で作成する必要があることを意味しますB

class B
{
    A a;

    public: B() : a(5) {}
};

実際に見てください

于 2012-08-30T23:13:45.257 に答える