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

如何使用初始化列表初始化 C 成員數組?

Mary-Kate Olsen
發布: 2024-11-04 05:41:02
原創
736 人瀏覽過

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

使用Initializer_list 初始化C 0x 成員數組時出現賦值錯誤

嘗試使用初始值設定項列表初始化成員數組時,遇到編譯器錯誤:賦值中的型別不相容'std::initializer_list' 到'const int [2]'。

使用可變參數模板建構函數的解決方案

您可以選擇可變參數,而不是初始化列表構造函數模板構造函數:

<code class="cpp">struct Foo {
    int x[2];
    template <typename... Ts>
    Foo(Ts... ts) : x{ts...} {}
};</code>
登入後複製

使用這種方法,您可以如下初始化Foo 物件:

<code class="cpp">Foo f1(1, 2);     // OK
Foo f2{1, 2};     // Also OK
Foo f3(42);      // OK; x[1] zero-initialized
Foo f4(1, 2, 3); // Error: too many initializers</code>
登入後複製

使用非常量成員數組並在函數體中初始化的解決方案

如果恆定性不是必需的,您可以在跳過構造函數中的初始化後在函數體內初始化數組:

<code class="cpp">struct Foo {
    int x[2]; // or std::array<int, 2> x;
    Foo(std::initializer_list<int> il) {
       std::copy(il.begin(), il.end(), x);
       // or std::copy(il.begin(), il.end(), x.begin());
       // or x.fill(il.begin());
    }
}</code>
登入後複製

但是,此方法缺少可變參數模板提供的編譯時邊界檢查構造函數。

以上是如何使用初始化列表初始化 C 成員數組?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!