C++ 不能用初始值设定项列表初始化非聚合错误

Posted bcbobo21cn

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++ 不能用初始值设定项列表初始化非聚合错误相关的知识,希望对你有一定的参考价值。

我听说C++ 结构体如果带有构造函数,不能使用大括号列表一次性对成员赋值,否则将出现 不能用初始值设定项列表初始化非聚合 错误;

下面看一下;

正常运行如下;

 

 下面用大括号一次性赋值成员;

    构建一下;没有出现前面的错误;出现了另一个错误;could not convert '"......"' from '<brace-enclosed initializer list>' to 'xxx';

如果不带构造函数就可以;

 

 C++对于non-aggregates(非聚合对象),不能使用初始化列表;只有聚合对象才可以这样使用;
聚合对象定义为:
1. 数组
2. 不包含 ( 构造函数、private和protect、基类、虚函数 )的类、结构体和联合体
    不满足聚合对象定义而使用初始化列表都会产生这样的错误;

以上是关于C++ 不能用初始值设定项列表初始化非聚合错误的主要内容,如果未能解决你的问题,请参考以下文章

大括号括起来的初始值设定项列表转换错误

字段初始值设定项无法引用非静态字段、方法或属性

字段初始值设定项无法引用非静态字段、方法或属性

成员初始值设定项不命名非静态数据成员

MSVC 19.11 / Visual C++ 2017:大小为 1 和 size_t 类型的初始值设定项列表被误解

C#变量初始化问题:字段初始值无法引用非静态字段方法或属性