これは本当に簡単な質問だと思います。次のコードは、私がやろうとしていることを示しています。
class MemberClass {
public:
MemberClass(int abc){ }
};
class MyClass {
public:
MemberClass m_class;
MyClass(int xyz) {
if(xyz == 42)
m_class = MemberClass(12);
else
m_class = MemberClass(32);
}
};
m_class
これは、空のコンストラクター (存在しない) で作成されているため、コンパイルされません。これを行う正しい方法は何ですか?私の推測では、ポインターを使用して を使用してインスタンス化m_class
していますnew
が、もっと簡単な方法があることを願っています。
編集:前に言ったはずですが、実際の問題にはさらに複雑な問題があります。環境をセットアップするために、m_class を初期化する前にメソッドを呼び出す必要があります。そう:
class MyClass {
public:
MemberClass m_class;
MyClass(int xyz) {
do_something(); // this must happen before m_class is created
if(xyz == 42)
m_class = MemberClass(12);
else
m_class = MemberClass(32);
}
};
ファンシーな初期化リストのトリックでこれを達成することは可能ですか?