【发布时间】:2012-05-12 22:39:53
【问题描述】:
我有下一个结构:
struct B
{
int a;
int b;
};
struct D: public B
{
int c;
};
我想在编译时初始化结构 D 的一些变量,就像我要初始化结构 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”初始化进行编译。
那么,问题是如何初始化派生结构? 如果现在有初始化派生结构的规则,原因是什么?
谢谢。
【问题讨论】:
-
请在 C++ 中使用Member Initialization list。
-
但是该列表转到构造函数方法。 OP 正在询问如何在构造函数之外设置值,即针对单个实例而不是所有实例。
-
这里的真正目的是什么?您是否担心初始化时间?
-
没错,我需要在编译时在构造函数之外初始化它。
标签: c++