Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk Memulakan Tatasusunan Ahli dengan Senarai Pemula dalam C 0x?
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>
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>
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!