no puede utilizar una inicialización lista para un struct
después de que haya sido inicializado. Ya ha inicializado por defecto las dos estructuras Customer
cuando declaró la matriz customerRecords
. Por lo tanto, tendrá que utilizar la sintaxis de acceso de miembro para establecer el valor de los miembros de datos no estáticos, inicializar las estructuras utilizando una lista de listas de inicialización cuando declare la matriz en sí, o puede crear un constructor para su estructura y use la función de miembro predeterminada operator=
para inicializar los miembros de la matriz.
Así que cualquiera de los siguientes podría trabajar:
Customer customerRecords[2];
customerRecords[0].uid = 25;
customerRecords[0].name = "Bob Jones";
customerRecords[1].uid = 25;
customerRecords[1].namem = "Jim Smith";
O si ha definido un constructor para su estructura como:
Customer::Customer(int id, string input_name): uid(id), name(input_name) {}
A continuación, podría hacer:
Customer customerRecords[2];
customerRecords[0] = Customer(25, "Bob Jones");
customerRecords[1] = Customer(26, "Jim Smith");
O podrías hacer la secuencia de listas de inicialización que Tuomas usó en su respuesta. La razón por la que funciona su sintaxis de lista de inicialización es porque en realidad está inicializando las estructuras Customer
en el momento de la declaración de la matriz, en lugar de permitir que las estructuras se inicialicen por defecto cada vez que declare una estructura de datos agregada como una matriz.
Su ejemplo se compila sin errores en Ideone (gcc-4.5.1) http://www.ideone.com/c9kMr – Praetorian
Esto se debe a las nuevas características inherentes a la inicialización listas y C++ 0x ... su código no se compila bajo C++ 03. – Jason