C++ 構造体の初期化 [重複] 質問する

C++ 構造体の初期化 [重複] 質問する

以下のように C++ で構造体を初期化することは可能ですか?

struct address {
    int street_no;
    char *street_name;
    char *city;
    char *prov;
    char *postal_code;
};

address temp_address = { .city = "Hamilton", .prov = "Ontario" };

リンクここそしてこここのスタイルは C でのみ使用可能であると書かれています。もしそうなら、なぜ C++ では不可能なのでしょうか? C++ で実装されていない技術的な理由があるのでしょうか、それともこのスタイルを使用するのはよくない習慣なのでしょうか。構造体が大きいため、この初期化方法を使用するのが気に入っています。このスタイルを使用すると、どのメンバーにどの値が割り当てられているかが明確にわかります。

同じ読みやすさを実現できる他の方法があれば、ぜひ教えてください。

この質問を投稿する前に、次のリンクを参照しました。

  1. AIX 用 C/C++
  2. 変数によるC構造体の初期化
  3. C++ でのタグを使用した静的構造の初期化
  4. C++11 適切な構造体の初期化

ベストアンサー1

各初期化値を明確にしたい場合は、複数の行に分割し、それぞれにコメントを記入します。

address temp_addres = {
  0,  // street_no
  nullptr,  // street_name
  "Hamilton",  // city
  "Ontario",  // prov
  nullptr,  // postal_code
};

おすすめ記事