class C
{
public:
C() : arr({1,2,3}) //doesn't compile
{}
/*
C() : arr{1,2,3} //doesn't compile either
{}
*/
private:
int arr[3];
};
Creo que la razón es que las matrices solo se pueden inicializar con =
sintaxis, es decir:
int arr[3] = {1,3,4};
Preguntas
- ¿Cómo puedo hacer lo que quiero hacer (es decir, inicializar una matriz en un constructor (sin asignar elementos en el cuerpo)). ¿Es siquiera posible?
- ¿El estándar C ++ 03 dice algo especial sobre la inicialización de agregados (incluidas las matrices) en los inicializadores de ctor? ¿O la invalidez del código anterior es un corolario de algunas otras reglas?
- ¿Las listas de inicializadores C ++ 0x resuelven el problema?
PD: Por favor, no menciones los vectores, boost :: arrays y su superioridad a los arrays, que yo conozco bien.