non-aggregates(非聚合)对象不能使用初始化列表
2011-12-15 17:44
309 查看
non-aggregates cannot be initialized with initializer list
这个错误。
来源:
假设定义这样一个结构体
以下使用的初始化方法
则会报出non-aggregates cannot be initialized with initializer list
这里产生的原因是T_A存在构造函数,因此不能使用初始化列表。
如果没有构造函数
则会正常编译通过,不会报错。
实际上,并不只有上面这个例子的情况下才会产生这种问题。
对于non-aggregates(非聚合对象),不能使用初始化列表。只有聚合对象才可以这样使用。
而聚合对象定义为:
1. 数组
2. 不包含 ( 构造函数、private和protect、基类、虚函数 )的类、结构体和联合体
也就是说,不满足聚合对象定义而使用初始化列表都会产生这样的错误。使用时需注意。
这个错误。
来源:
假设定义这样一个结构体
struct T_A { int iX; int iY; T_A() { iX = iY = 0; } };
以下使用的初始化方法
T_A tA = { 2, 1 };
则会报出non-aggregates cannot be initialized with initializer list
这里产生的原因是T_A存在构造函数,因此不能使用初始化列表。
如果没有构造函数
struct T_A { int iX; int iY; }; T_A tA = { 2, 1 };
则会正常编译通过,不会报错。
实际上,并不只有上面这个例子的情况下才会产生这种问题。
对于non-aggregates(非聚合对象),不能使用初始化列表。只有聚合对象才可以这样使用。
而聚合对象定义为:
1. 数组
2. 不包含 ( 构造函数、private和protect、基类、虚函数 )的类、结构体和联合体
也就是说,不满足聚合对象定义而使用初始化列表都会产生这样的错误。使用时需注意。
相关文章推荐
- non-aggregates(非聚合)对象不能使用初始化列表
- non-aggregates(非聚合)对象不能使用初始化列表
- non-aggregates(非聚合)对象不能使用初始化列表
- 对象成员及初始化列表的使用demo
- 为什么在单例类中不能使用双重检查锁来初始化对象
- 合理使用 inline来优化程序 尽可能减少临时对象 尽可能使用初始化列表
- 对象被使用之前先被初始化--定义于不同编译单元内的non-local tatic对象
- 为什么对于类的const成员,只能使用初始化列表,而不能在构造函数内部进行赋值操作
- C++构造函数初始化列表中不能使用this指针
- effective c++条款4-确定对象在使用前被初始化
- java中类/对象的初始化顺序以及静态代码块的使用
- non-local static对象初始化顺序
- 使用struct与使用class初始化对象效率对比
- C++有哪几种情况只能用初始化列表,而不能用赋值?
- jsp中如果带有头文件 不能使用document.boy对象必须改为document.documentElement.
- 何时使用构造函数初始化列表?
- 微信小程序picker组件不能使用对象的解决办法
- [Effective C++]条款04:确定对象被使用前已先被初始化
- 条款4:确定对象被使用前已被初始化(Make sure that objects are initialized before they're used)
- C++使用构造器初始化对象的两种方式