首頁 > 後端開發 > C++ > 主體

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

Barbara Streisand
發布: 2024-11-04 17:50:02
原創
844 人瀏覽過

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板