2つMyVec
作成されていますか?MyVec
コンストラクターのassinmentの前に、デフォルトで構築された一時的なものが存在しFoo
ますか?
struct Foo {
typedef std::vector<int> MyVec;
Foo () {
// determine how big the vector needs to be.
// .....
m_vec = MyVec(12);
}
MyVec m_vec;
};
私はポインターを使ってそれができることを知っています。
struct Foo {
typedef std::vector<int> MyVec;
Foo () {
m_vec = new MyVec();
}
~Foo () {
delete m_vec;
}
MyVec * m_vec;
};
しかし、可能であればそれを避けたいと思います。
編集:
言及するのを忘れました。代入の前にコンストラクターで何かをする必要があるため、初期化子リストを使用できません。