c++ - 在C++的编译时初始化派生结构类型的变量

标签 c++

我有下一个结构:

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”初始化进行编译。

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

谢谢。

最佳答案

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

关于c++ - 在C++的编译时初始化派生结构类型的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10564591/

相关文章:

c++ - 如何用 C 或 C++ 编写只有 GET 和 POST 方法的 http 协议(protocol)客户端

C++ 简单的从二进制转换为十进制

c++ 继承 Building 方法

c++ - 为什么下面使用 auto_ptr 的异常安全代码不同?

c++ - 在 Rcpp 中生成整数样本

c++ - static_cast int 引用 int?

c++ - 如何处理mfc中同一个按钮的单击和双击?

c++ - 如何在编译时测试模板函数是否存在

c++ - 包含 QML 中的对象的 QAbstractListModel 有哪些缺点?

c++ - 模板 <typename T> 和模板 <class T> 有什么区别。对我来说,两者都产生相同的结果