2011-11-07 12 views
0

私はクラスFooと唯一のコンストラクタFoo(int length)を持っています。私もメンバー 'Foo myFoo = myFoo(100)と'クラス 'クラスを持っていますが、どうすれば初期化できますか? Fooコンストラクターに長さパラメーターがない場合にのみ初期化できます。C++でパラメータを持つメンバ変数を初期化する

ありがとうございます。

+1

コードを表示してください。 –

答えて

0

は私はわからないが、通常のメンバーは、コンストラクタの初期化子リストで初期化されています

class Bar 
{ 
public: 
    Bar(); 
private: 
    Foo myFoo; 
}; 

Bar::Bar() 
// The following initializes Foo 
    : Foo(100) 
// constructor body 
{ 
} 

Barは、いくつかのコンストラクタを持っている場合、あなたはそれぞれにmyFooを初期化する必要があることそのうちの。あなたのコンパイラが、まだそれをサポートする、または唯一の特別なフラグとそれをサポートしていない可能性がありますしかし

class Bar 
{ 
    Foo myFoo = Foo(100); 
}; 

C++ 11は、このように、メンバーの宣言で直接初期化を追加しました。

4

この質問は何度も出てきました。あなたはそれを行うには、コンストラクタの初期化リストを使用します。

class Bar 
{ 
    Bar() : myFoo(100) {} 

    Foo myFoo; 
}; 

これらの初期化リストを使用すると、基底クラスのためだけでなく、メンバーのコンストラクタを呼びましょう、そしてそれらを初期化することを目的と方法です。私が正しくあなたを理解している場合