class C
{
public:
C() : arr({1,2,3}) //doesn't compile
{}
/*
C() : arr{1,2,3} //doesn't compile either
{}
*/
private:
int arr[3];
};
Saya yakin alasannya adalah bahwa array hanya dapat diinisialisasi dengan =
sintaks, yaitu:
int arr[3] = {1,3,4};
Pertanyaan
- Bagaimana saya bisa melakukan apa yang ingin saya lakukan (yaitu, menginisialisasi array dalam konstruktor (tidak menugaskan elemen dalam tubuh)). Apakah itu mungkin?
- Apakah standar C ++ 03 mengatakan sesuatu yang khusus tentang menginisialisasi agregat (termasuk array) di penginisialisasi ctor? Atau ketidakabsahan kode di atas adalah akibat wajar dari beberapa aturan lain?
- Apakah daftar penginisialisasi C ++ 0x menyelesaikan masalah?
PS Harap tidak menyebutkan vektor, boost :: array, dan keunggulannya terhadap array, yang sangat saya sadari.