class C
{
public:
C() : arr({1,2,3}) //doesn't compile
{}
/*
C() : arr{1,2,3} //doesn't compile either
{}
*/
private:
int arr[3];
};
Credo che il motivo sia che gli array possono essere inizializzati solo con la =
sintassi, ovvero:
int arr[3] = {1,3,4};
Domande
- Come posso fare quello che voglio fare (cioè inizializzare un array in un costruttore (senza assegnare elementi nel corpo)). È anche possibile?
- Lo standard C ++ 03 dice qualcosa di speciale sull'inizializzazione degli aggregati (inclusi gli array) negli inizializzatori ctor? O l'invalidità del codice sopra è un corollario di altre regole?
- Gli elenchi di inizializzatori C ++ 0x risolvono il problema?
PS Per favore non menzionare i vettori, boost :: arrays e la loro superiorità rispetto agli array, di cui sono ben consapevole.