2012-02-28 8 views
2

オブジェクトAのデフォルトのコンストラクタを作成したいのですが、私の問題はオブジェクトの変数の1つがベクトル配列Bのオブジェクトだということです。C++で空のオブジェクトベクトルを設定する方法は?

基本的に私の悩みを与えるラインは現在、次のようになります。

A(): name(""), bArray({B()}), n(0) {} 

それはいくつかの構文の問題でなければなりません。

全コンストラクタは以下のようになります。

A(string n, vector<B> in, int k): name(n), bArray(in), n(k) {} 
+1

初期化子リストにbArrayを追加しないでください。あなたがクラス変数としてそれを持っているなら、それはすでに空です。 –

+1

'bArray()'はうまくいきませんか? –

答えて

5

あなたは初期化子リストでvectorを初期化する必要はありません。メンバークラスは既定のコンストラクタを使用して作成されています。この場合、空のベクターに初期化されます。

+0

悪いアドバイス、IMHO。イニシャライザリストは、混乱を避けるためにメンバ変数宣言をエコーする必要があります。 Scott MeyersはEffC++でも同じことを言っています。 –

3

nとinには独自のデフォルトコンストラクタがあるため、明示的に初期化する必要はありません。 kを0に初期化し、他の2つを省略すると、うまくいくはずです。

関連する問題