初始化列表在 VC10 中不起作用
我在 VC++ 2010 中编写了这个程序:
class class1
{
public:
class1 (initializer_list<int> a){};
int foo;
float Bar;
};
void main()
{
class1 c = {2,3};
getchar();
}
但是当我编译项目时出现此错误:
错误 1 错误 C2552:“c”: 非聚合无法初始化 带初始值设定项 列出 c:\users\pswin\documents\visual 工作室 2010\projects\test_c++0x\test_c++0x\main.cpp 27
和
2 IntelliSense:初始化 对象不允许使用“{...}” 类型 “class1”c:\users\pswin\documents\visual 工作室 2010\projects\test_c++0x\test_c++0x\main.cpp 27
问题是什么?
i wrote this program in VC++ 2010:
class class1
{
public:
class1 (initializer_list<int> a){};
int foo;
float Bar;
};
void main()
{
class1 c = {2,3};
getchar();
}
but i get this errors when i compile project:
Error 1 error C2552: 'c' :
non-aggregates cannot be initialized
with initializer
list c:\users\pswin\documents\visual
studio
2010\projects\test_c++0x\test_c++0x\main.cpp 27
and
2 IntelliSense: initialization with
'{...}' is not allowed for object of
type
"class1" c:\users\pswin\documents\visual
studio
2010\projects\test_c++0x\test_c++0x\main.cpp 27
what is the problem?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
不应支持它 完全:
该错误消息引用了 C++0x 之前的聚合初始化功能,该功能允许使用大括号初始化某些用户定义类型:
聚合在§8.5.1中定义:
It shouldn't be supported at all:
The error message refers to the pre-C++0x feature of aggregate initialization, which allows the initialization of certain user-defined types by using curly braces:
Aggregates are defined in §8.5.1: