鉴于以下内容:
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
答案 0 :(得分: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
仍然是一个聚合,因此您可以使用聚合初始化。