ホームページ  >  記事  >  バックエンド開発  >  C 0x の初期化リストを使用してメンバー配列を初期化する方法

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

Barbara Streisand
Barbara Streisandオリジナル
2024-11-04 17:50:02798ブラウズ

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 サイトの他の関連記事を参照してください。

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