1. ホーム
  2. c++

[解決済み】C++ 構造体の初期化

2022-03-26 23:21:05

質問

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. C/C++ for AIX
  2. C 言語の構造体を変数で初期化する
  3. C++におけるタグを用いた静的構造体の初期化
  4. C++11 適切な構造体の初期化

どのように解決するのですか?

それぞれの初期化値が何であるかを明確にしたい場合は、複数行に分割し、それぞれにコメントを付ければよいでしょう。

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