コンストラクター初期化子リストでの配列メンバーの初期化
メンバー初期化子リストを使用してコンストラクターで配列を初期化できないため、基礎となるルールと可能性について疑問が生じます。
C 03 標準および集約の初期化
C 03 標準では、メンバー初期化子リストで配列を含む集約型の直接初期化を使用することを禁止しています。直接初期化とは、提供されたコード スニペットに見られるように、かっこを付けてコンストラクターを直接使用することを指します。
ソリューションとしての Boost::array
別のアプローチは、使用することです。配列をカプセル化する構造体。構造体内でコンストラクターを定義すると、オブジェクトの作成時に配列を初期化できます。これは、Boost::array ライブラリで採用されているアプローチと似ています。
C 11 リストの初期化
C 11 ではリストの初期化が導入され、集計の直接初期化が可能になりました。 、配列を含むメンバー初期化子リスト。ただし、質問に記載されている構文は正しくありません。リストの初期化を使用するには、配列要素を中かっこで囲む必要があります。
class C { public: C() : arr{1, 2, 3} {} };
この構文は、コンストラクター内の arr 配列を正しく初期化します。
以上がC コンストラクターはメンバー初期化子リストで配列を直接初期化できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。