次のクラスがあるとします。
class MyInteger {
private:
int n_;
public:
MyInteger(int n) : n_(n) {};
// MORE STUFF
};
そして、このクラスにはデフォルトの自明なコンストラクターがないとしますMyInteger()
。int
何らかの理由で初期化するために常に を提供する必要があります。そして、コードのどこかでvector<MyInteger>
. MyInteger
これで各コンポーネントを初期化するにはどうすればよいvector<>
ですか?
関数内の通常の変数の 2 つの状況 (おそらく解決策は同じですが、とにかく説明します) があります。
int main(){
vector<MyInteger> foo(10); //how do I initialize each
//MyInteger field of this vector?
doStuff(foo);
}
クラス内のデータとして:
class MyFunClass {
private:
vector<MyInteger> myVector;
public:
MyFunClass(int size, int myIntegerValue) : myVector(size) {};
// what do I put here if I need the
// initialization to call MyInteger(myIntegerValue) for all
// components of myVector?
};
初期化リストでそれを行うことは可能ですか、それとも MyFunClass(int, int) コンストラクターで手動で初期化を記述する必要がありますか?
これは非常に基本的なことのように思えますが、どういうわけか本の中でそれを見逃しており、Web で見つけることができません。