【问题标题】:Initialize variable of derived struct type in compile time in c++在 C++ 的编译时初始化派生结构类型的变量
【发布时间】: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++


【解决方案1】:

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

【讨论】:

猜你喜欢
  • 2012-05-30
  • 2022-01-21
  • 1970-01-01
  • 2020-08-19
  • 1970-01-01
  • 1970-01-01
  • 2020-10-03
  • 2017-07-13
  • 1970-01-01
相关资源
最近更新 更多