Учитывая следующее:
struct A
{
int foo;
int bar;
};
struct B : public A
{
int baz;
};
Как бы я построить B
со списком инициализации, который также создает элементы в A
? Кажется, что следующее не работает, но я ищу что-то вроде:
B my_b{{1, 2}, 3}; // foo = 1, bar = 2, baz = 3
Вы не можете сделать это без добавления явного конструктора и выполнения большей части работы самостоятельно:
struct B : public A
{
B(const A &a, int _baz) : A{a}, baz{_baz} {}
int baz;
};
B my_b{{1, 2}, 3};
И вам нужно будет синхронизировать этот контейнер с B
участники.
Если вы использовали сдерживание вместо наследования, то B
все равно будет агрегатом, и поэтому вы можете использовать агрегатную инициализацию.
Других решений пока нет …