質問の更新:
C++で次のことをしたい:
struct Param {
public:
int len;
int in1;
float in2;
};
Param params;
class Element {
private:
int value1;
float value2;
public:
Element();
Element(int n) {value1 = n; value2 = 0;}
Element(int n1, float n2) {value1 = n1; value2 = n2;}
}
class Parent {
private:
class Element elem;
vector<Element> elemVec;
public:
Parent();
Parent(int n);
}
Parent
コンストラクターを呼び出すときに、クラス要素のデフォルト以外のコンストラクターelem
も呼び出されるように、次のコンストラクターを作成したいと思いますelemVec
。次のようにコンストラクターをelem
呼び出す必要があることがわかりました。
Parent::Parent(int n) : elem(n) {
}
elemVec
ベクトルの各要素を構築するにはどうすればよいですか。Element(int, float)
コンストラクターが各ベクトル要素に対して呼び出されint
、float
値が構造体フィールドparams.value1
およびから取得されますparams.value2
。のサイズはelemVec
、構造体フィールドで定義する必要がありますparams.len
。
コンストラクタ本体にループを記述すると、構築されたオブジェクトの望ましくない動作が発生します。