のベクターに新しい要素を追加する際にデフォルト以外のコンストラクタを使用して、私はこのように、別のクラスからオブジェクトのベクトルを持っている:<class>オブジェクトクラスで
class Foo {
private:
std::vector<Bar> barObject;
...
};
クラスのバーがデフォルトを定義しますコンストラクタ(すべてのプライベート変数がゼロに初期化)、および値で供給することができる非デフォルトコンストラクタは、のように:
FooクラスでBar newBar(var1, var2);
、barObjectベクトルはサイズを指定せずに宣言されています。
私はデフォルトのコンストラクタを使用したい場合は、私はちょうど行うことができます推測している。その後、
barObject.resize(barObject.size()+1);
と私はのようなベクトル何かにbarObjectのプライベート変数を変える:
barObject.at(i).SetVar(value)
しかし、デフォルト以外のコンストラクタを使用してプライベート変数の値を入力したい場合は、次のようにしてください:
barObject.insert(i, tempBar);
tempBarは、barObjectの位置iに必要なプライベート値を持つBarクラスのオブジェクトですか?
散文を伴う少なすぎるコード:
をちょうどイテレータ
i
が有効なものであることを確認してください。できるだけ多くの[mcve]を作ってください。 – Yunnosch@Yunnoschたくさんのコード!=より良い質問。それは常に黒と白ではありません。 – Rakete1111
@ Rakete1111真実だが、コードを記述することによって(有用であるが)、コードを示すことできれいに増やすことができる。 – Yunnosch