ホームページ >バックエンド開発 >C++ >C コンストラクター内でオブジェクトの配列を初期化するにはどうすればよいでしょうか?

C コンストラクター内でオブジェクトの配列を初期化するにはどうすればよいでしょうか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-06 19:08:02932ブラウズ

How can you initialize an array of objects within a C   constructor?

C 配列コンストラクターの初期化

C でのオブジェクトの配列の初期化は、特に配列以外の例と比較した場合に難しい場合があります。次の配列以外の初期化を考えてみましょう:

struct Foo { Foo(int x) { /* ... */  } };

struct Bar {
     Foo foo;

     Bar() : foo(4) {}
};

この例では、Bar 構造体の Foo オブジェクトは、コンストラクターの初期化リストを使用して適切に初期化されます。ただし、オブジェクトの配列を初期化するには、別のアプローチが必要です。

struct Foo { Foo(int x) { /* ... */  } };

struct Baz { 
     Foo foo[3];

     Baz() : foo[0](4), foo[1](5), foo[2](6) {}
};

上の例に示されている間違った構文は、配列要素を個別に初期化するという課題を浮き彫りにしています。

解決策

残念ながら、提供された回答によると、コンストラクター内で C のオブジェクトの配列を初期化する標準的な方法はありません。代わりに、配列メンバーにはデフォルトのコンストラクターを使用する必要があり、必要な初期化は構築時間後に実行できます。

この制限は、使用されている組み込みプロセッサの制約に起因しており、最新の C をサポートしていません。規格。回避策として、作者は、デフォルトのコンストラクターと、構築後に初期化を実行する明示的な init() メソッドを作成することを提案しています。このアプローチは理想的ではないかもしれませんが、配列のコンストラクター初期化子の欠如を克服します。

以上がC コンストラクター内でオブジェクトの配列を初期化するにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。