」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何在 C++0x 中使用初始化列表初始化成員數組?

如何在 C++0x 中使用初始化列表初始化成員數組?

發佈於2024-11-08
瀏覽:560

How to Initialize Member Arrays with Initializer Lists in C  0x?

使用初始值設定項目清單初始化成員陣列

在C 0x 中,嘗試使用初始值設定項清單初始化成員陣列時,可能會遇到錯誤「賦值中的型別不相容」 .

要解決此問題,請考慮使用可變參數範本建構子:

struct foo {
    int x[2];
    template 
    foo(T... ts) : x{ts...} {}
};

int main() {
    // Usage
    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
    foo f5(3.14);  // Error: narrowing conversion not allowed
    foo f6("foo"); // Error: no conversion from const char* to int
}

如果保留「const」狀態不是必要的,您也可以使用函數來載入陣列值:

struct foo {
    int x[2];
    foo(std::initializer_list il) {
        std::copy(il.begin(), il.end(), x);
    }
};

但是,這種方法放棄了編譯時邊界檢查。

最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3