Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Memulakan Tatasusunan Ahli dengan Senarai Pemula dalam C 0x?

Bagaimana untuk Memulakan Tatasusunan Ahli dengan Senarai Pemula dalam C 0x?

Mary-Kate Olsen
Lepaskan: 2024-11-02 17:25:29
asal
887 orang telah melayarinya

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

Memulakan Tatasusunan Ahli dengan Senarai Pemula

Dalam C 0x, anda mungkin menghadapi ralat "jenis tidak serasi dalam tugasan" apabila cuba memulakan tatasusunan ahli dengan senarai pemula .

Untuk menyelesaikan masalah ini, pertimbangkan untuk menggunakan pembina templat variadic sebagai ganti:

<code class="cpp">struct foo {
    int x[2];
    template <typename... T>
    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
}</code>
Salin selepas log masuk

Jika mengekalkan status 'const' tidak penting, anda boleh menggunakan fungsi untuk memuatkan nilai tatasusunan secara alternatif. :

<code class="cpp">struct foo {
    int x[2];
    foo(std::initializer_list<int> il) {
        std::copy(il.begin(), il.end(), x);
    }
};</code>
Salin selepas log masuk

Walau bagaimanapun, pendekatan ini melepaskan pemeriksaan had masa kompilasi.

Atas ialah kandungan terperinci Bagaimana untuk Memulakan Tatasusunan Ahli dengan Senarai Pemula dalam C 0x?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan