C++ 为 Struct 及其继承的成员调用默认构造函数

皮奥多

我希望能够在 C++14 中使用以下语法初始化一个对象:

const auto data1 = DataOne{1, 2, 3};
const auto data2 = DataTwo{1, 2, 3, 4, 5};
const auto data3 = DataThree{1, 2, 3, 4, 5, 6, 7};

这给了我以下错误消息:

error msg `error: no matching function for call to ‘DataThree::DataThree(<brace-enclosed initializer list>)’`

类型定义为:

struct DataOne
{
    int a;
    int b;
    int c;
};

struct DataTwo : DataOne
{
    int d;
    int e;
};

struct DataThree : DataTwo
{
    int f;
    int g;
};

我不想在 struct方法中使用struct ,因为那样我将需要通过我不想使用的双点或三点来调用 params ,因为所有成员都同等重要,而且阅读起来会很糟糕。

YSC

从 C++17 开始,您想要的语法是有效的:

const auto data3 = DataThree{1, 2, 3, 4, 5, 6, 7};

现场演示

在此之前,聚合初始化是非法的[dcl.init.aggr]/1

聚合是一个数组或类(第 9 条),没有用户提供的构造函数(12.1),没有私有或受保护的非静态数据成员(第 11 条),没有基类(第 10 条),也没有虚函数(10.3) )。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为类成员函数的struct输入设置默认值

来自分类Dev

如何在C#中为struct成员赋予XML序列化默认值

来自分类Dev

覆盖从c struct继承的函数

来自分类Dev

C ++继承:避免调用基类的默认构造函数

来自分类Dev

C ++为类调用构造函数

来自分类Dev

在C ++中继承Struct

来自分类Dev

C ++检查struct是否为空

来自分类Dev

指针内部为数组(C)的struct

来自分类Dev

C-构造函数,最好返回struct或指向struct的指针?

来自分类Dev

预期的struct foo *,但函数指针的参数类型为struct foo *

来自分类Dev

为std :: vector <struct>创建getter函数

来自分类Dev

为std :: vector <struct>创建getter函数

来自分类Dev

C#如何从默认构造函数继承

来自分类Dev

非默认构造函数的C ++继承

来自分类Dev

c ++模板为特定类型的类调用特定的构造函数

来自分类Dev

在struct中将指针设置为C中的数组

来自分类Dev

C ++将struct属性设置为自己的地址

来自分类Dev

检查 struct 的递归子代是否为 NULL(C 语言)

来自分类Dev

C ++初始化程序列表成员仍在调用默认构造函数?

来自分类Dev

动态C函数和struct

来自分类Dev

插入 C struct 函数指针

来自分类Dev

在 C++ struct 中,构造函数中的默认值和默认参数有什么区别?

来自分类Dev

没有调用C ++默认构造函数

来自分类Dev

在C结构上调用默认构造函数

来自分类Dev

没有调用C ++默认构造函数

来自分类Dev

为通用类创建一个具体的构造函数,而无需在C#中继承

来自分类Dev

C ++调用默认构造函数而不是复制构造函数

来自分类Dev

在C ++中使用不同的struct复制构造函数

来自分类Dev

如何使用 doxywizard 正确记录返回类型为 struct 的函数?

Related 相关文章

热门标签

归档