この質問は、すべてのデータメンバをパラメータとして受け取り、それらを初期化するコンストラクタがあるC++の古いデータ定義に関するものです。拡張されたイニシャライザリストの上にあるこの唯一の理由は、構造の一部を指定するだけのエラーを防ぐためです。すべての構造体メンバを初期化する
struct Struct {
A a;
B b;
C c;
Struct(A a, B b, C c) : a(a) , b(b), c(c) {}
};
それは、各メンバーの種類が二度書かれていることを観察する価値がある、と名前を4回:
はここで、このような構造体を書くための一般的な方法です。実際には、このような構造体のコードはむしろ圧縮可能であることを意味します。この構造体をC++で記述する方法はありますか?
C++はかなり冗長で、ないと思います。一つの注意点:以前の '()'初期化よりも一様な初期化が好まれるので(例えば、 'a {a}、b {b}、c {c}')使用するべきです([この質問](https://プログラマ.stackexchange.com/questions/133688/is-c11-uniform-initialization-a-replacement-for-the-old-style-syntax)) – Majora320
このクラスはPlain Old Dataクラスではありません。デフォルトのコンストラクタです。 'Struct()= default;'を追加する必要があります。 –