Вы не можете использовать список инициализации для struct
после его инициализации. Вы уже инициализировали по умолчанию две структуры Customer
, когда объявили массив customerRecords
. Поэтому вам нужно либо использовать синтаксис доступа к элементам для установки значения нестатических элементов данных, либо инициализировать структуры с использованием списка списков инициализации при объявлении самого массива, либо вы можете создать конструктор для своей структуры и использовать функцию-член operator=
по умолчанию для инициализации членов массива.
Так что может сработать любое из следующих:
Customer customerRecords[2];
customerRecords[0].uid = 25;
customerRecords[0].name = "Bob Jones";
customerRecords[1].uid = 25;
customerRecords[1].namem = "Jim Smith";
Или, если вы определили конструктор для вашей структуры, например:
Customer::Customer(int id, string input_name): uid(id), name(input_name) {}
Тогда вы можете сделать:
Customer customerRecords[2];
customerRecords[0] = Customer(25, "Bob Jones");
customerRecords[1] = Customer(26, "Jim Smith");
Или вы можете выполнить последовательность списков инициализации, которую Туомас использовал в своем ответе. Причина, по которой его синтаксис списка инициализации работает, заключается в том, что вы фактически инициализируете структуры Customer
во время объявления массива, а не позволяете структурам инициализироваться по умолчанию, что происходит всякий раз, когда вы объявляете агрегированные данные. структура как массив.