首頁  >  文章  >  後端開發  >  如何在 C 0x 中使用初始化器清單初始化成員陣列?

如何在 C 0x 中使用初始化器清單初始化成員陣列?

Barbara Streisand
Barbara Streisand原創
2024-11-04 17:50:02800瀏覽

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>

或者,如果你可以不用常數,你可以跳過初始化並在函數體中填充數組:

<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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn