Вложенные инициализаторы в C++
Если поле структуры само является агрегатом, для него тоже можно указать назначенный инициализатор во вложенных фигурных скобках.
Внешняя запись называет поле, внутренняя - поля вложенного типа в порядке их объявления. Запишем коробку с меткой и выведем идентификатор из вложенной части:
#include <iostream>
struct Tag {
int id;
};
struct Crate {
Tag label;
int weight;
};
int main() {
Crate box{.label = {.id = 7}, .weight = 40};
std::cout << box.label.id << "\n";
return 0;
}
Компилятор собирает один объект Crate
из двух уровней инициализации. Порядок полей
label и weight в типе сохраняется
и во внешнем списке.
Объявите struct Head с полем code,
затем struct Row с полями head
и value. Создайте Row через
вложенный инициализатор и выведите code.