0

我不明白为什么可以这样做:

int numbers[] = {-4,3,0,100,2000};
Set d(5,numbers);

但是尝试执行此操作时出现以下错误:

Set d(5,{-4,3,0,100,2000});
Error:
warning: extended initializer lists only available with -std=c++0x
         or -std=gnu++0x|
error: no matching function for call to
         'Set::Set(int, <brace-enclosed initializer list>)'

构造函数:

Set::Set(int size, const int constSet[])

谢谢你的帮助

4

2 回答 2

3

这在 C++03 中是不允许的,但最新的标准 C++11 允许这样做。

请参阅:https ://en.wikipedia.org/wiki/C%2B%2B11#Initializer_lists或此: https ://www2.research.att.com/~bs/C++0xFAQ.html#init-list

顺便说一句,您的构造函数实际上是在使用指针,而不是数组。

于 2012-05-15T05:10:54.237 回答
0

由于您使用的是较新版本的 C++,因此在编译此代码时,请确保执行以下操作: g++ -std=c++0x sample.cpp -o sample

-std=c++0x当您使用较新版本的 c++ 时,这一点很重要

于 2012-05-15T05:25:33.443 回答