class C
{
public:
C() : arr({1,2,3}) //doesn't compile
{}
/*
C() : arr{1,2,3} //doesn't compile either
{}
*/
private:
int arr[3];
};
Uważam, że powodem jest to, że tablice można zainicjować tylko za pomocą =
składni, czyli:
int arr[3] = {1,3,4};
pytania
- Jak mogę zrobić to, co chcę zrobić (to znaczy zainicjować tablicę w konstruktorze (bez przypisywania elementów w treści)). Czy to w ogóle możliwe?
- Czy standard C ++ 03 mówi coś specjalnego na temat inicjowania agregatów (w tym tablic) w inicjalizatorach ctor? Czy nieważność powyższego kodu jest następstwem innych reguł?
- Czy listy inicjalizujące C ++ 0x rozwiązują problem?
PS Proszę nie wspominać o wektorach, boost :: tablice i ich wyższości nad tablicami, o czym dobrze wiem.