3

我有下一个结构:

struct B
{
   int a;
   int b;
};

struct D: public B
{
   int c;
};

我想在编译时初始化 struct D 的一些变量,就像我要初始化 struct B 它看起来像:

B b1 = { value_of_a, value_of_b };

我尝试通过以下方式执行此操作,但没有编译:

D d1 = { { value_of_a, value_of_b } , value_of_c };
D d2 = { value_of_a, value_of_b , value_of_c };

如果我将结构更改为:

struct D
{
   B bb;
   int c;
};

它使用“d1”和“d2”初始化进行编译。

那么,问题是如何初始化派生结构?如果现在有初始化派生结构的规则,原因是什么?

谢谢你。

4

1 回答 1

1

D派生自B的不是聚合(因为它有一个基类),因此您无法使用聚合初始化语法对其进行初始化。您需要使用构造函数和初始化列表。

于 2012-05-12T14:39:53.300 回答