私はクラスFoo
と唯一のコンストラクタFoo(int length)
を持っています。私もメンバー 'Foo myFoo = myFoo(100)
と'クラス 'クラスを持っていますが、どうすれば初期化できますか? Fooコンストラクターに長さパラメーターがない場合にのみ初期化できます。C++でパラメータを持つメンバ変数を初期化する
ありがとうございます。
私はクラスFoo
と唯一のコンストラクタFoo(int length)
を持っています。私もメンバー 'Foo myFoo = myFoo(100)
と'クラス 'クラスを持っていますが、どうすれば初期化できますか? Fooコンストラクターに長さパラメーターがない場合にのみ初期化できます。C++でパラメータを持つメンバ変数を初期化する
ありがとうございます。
は私はわからないが、通常のメンバーは、コンストラクタの初期化子リストで初期化されています
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は、このように、メンバーの宣言で直接初期化を追加しました。
この質問は何度も出てきました。あなたはそれを行うには、コンストラクタの初期化リストを使用します。
class Bar
{
Bar() : myFoo(100) {}
Foo myFoo;
};
これらの初期化リストを使用すると、基底クラスのためだけでなく、メンバーのコンストラクタを呼びましょう、そしてそれらを初期化することを目的と方法です。私が正しくあなたを理解している場合
Bar::Bar()
: myFoo(100) {
// constructor code
}
コードを表示してください。 –