class C
{
public:
C() : arr({1,2,3}) //doesn't compile
{}
/*
C() : arr{1,2,3} //doesn't compile either
{}
*/
private:
int arr[3];
};
Je pense que la raison en est que les tableaux ne peuvent être initialisés qu'avec la =
syntaxe, c'est-à-dire:
int arr[3] = {1,3,4};
Des questions
- Comment puis-je faire ce que je veux faire (c'est-à-dire initialiser un tableau dans un constructeur (sans affecter des éléments dans le corps)). Est-ce même possible?
- La norme C ++ 03 dit-elle quelque chose de spécial sur l'initialisation des agrégats (y compris les tableaux) dans les initialiseurs ctor? Ou l'invalidité du code ci-dessus est un corollaire de certaines autres règles?
- Les listes d'initialiseurs C ++ 0x résolvent-elles le problème?
PS Veuillez ne pas mentionner les vecteurs, boost :: arrays et leur supériorité par rapport aux tableaux, dont je suis bien conscient.