配列メンバーの初期化リスト
を使用してメンバー初期化リスト内の配列を初期化しようとしたため、提供されたコード スニペットはコンパイルに失敗します。次の構文:
`
C() : arr({1,2,3}) <br>{}<br>// <br>C() もコンパイルされません: arr{1,2,3} <br>{}`
これは、C 03 の配列は代入演算子でのみ初期化できるためです。 int arr[3] = {1,3,4}.
解決策
構造体の使用:
提供されたコードは次のことができます。この問題は、次のように構造体を使用して配列をラップし、コンストラクターで初期化することで修正できます。
`
int arr[3];<br> ArrayWrapper() : arr{1,2, 3} {}<br>};<br>`
C 11 リスト初期化の使用:
C 11 では、リスト初期化を使用して初期化できます。メンバー初期化子リスト内の配列:
`
int arr[3];
ArrayWrapper() : arr{1, 2, 3} {}
};
< ;/pre>`標準への準拠:
この動作は C 03 標準では明示的に対処されていませんが、集合体の初期化では次の規則が必要になるという当然の帰結です。代入演算子を使用します。
C 11 明確化:
C 11 では、リストの初期化を使用してメンバー初期化子リスト内の配列を初期化することが明示的に許可されています。以上がC のメンバー初期化子リストで配列を初期化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。