C 0x の初期化リストを使用してメンバー配列を初期化する方法

Barbara Streisand
リリース: 2024-11-04 17:50:02
オリジナル
797 人が閲覧しました

How to Initialize a Member Array with an Initializer List in C  0x?

初期化リストを使用してメンバー配列を初期化する方法

C 0x では、次のように初期化リストを使用してメンバー配列を初期化できます。 :

<code class="cpp">Foo f = {1,3};</code>
ログイン後にコピー

ただし、このコードは g 4.6 ではコンパイルされず、エラーが発生します:

incompatible types in assignment of ‘std::initializer_list<const int>&’ to ‘const int [2]’
ログイン後にコピー

この問題を解決するには、代わりに可変個引数テンプレート コンストラクターを使用できます。

<code class="cpp">struct Foo {
    int x[2];
    template <typename... T>
    Foo(T... ts) : x{ts...} {}
};

int main() {
    Foo f1(1, 2); // OK
}</code>
ログイン後にコピー

または、const なしで使用できる場合は、初期化をスキップして関数本体に配列を入力することもできます。

<code class="cpp">struct Foo {
    int x[2];
    Foo(std::initializer_list<int> il) {
        std::copy(il.begin(), il.end(), x);
    }
};</code>
ログイン後にコピー

この後者の方法では、配列を初期化子リストでは、可変個引数テンプレート コンストラクターのアプローチのようなコンパイル時の境界チェックは提供されません。

以上がC 0x の初期化リストを使用してメンバー配列を初期化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!