C++ 是否可以将一个大括号的文字数组作为构造函数中的参数发送?

C++ 是否可以将一个大括号的文字数组作为构造函数中的参数发送?,c++,C++,我不明白为什么可以这样做: int numbers[] = {-4,3,0,100,2000}; Set d(5,numbers); Set d(5,{-4,3,0,100,2000}); 但我在尝试执行此操作时遇到以下错误: int numbers[] = {-4,3,0,100,2000}; Set d(5,numbers); Set d(5,{-4,3,0,100,2000}); 感谢您的帮助这在C++03中是不允许的,但最新的标准C++11允许这样做 看这个:或者这个: 顺便说一

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

int numbers[] = {-4,3,0,100,2000};
Set d(5,numbers);
Set d(5,{-4,3,0,100,2000});
但我在尝试执行此操作时遇到以下错误:

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

感谢您的帮助

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

看这个:或者这个:


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

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

看这个:或者这个:


顺便说一下,你的构造函数实际上是使用一个指针,而不是一个数组。

因为你使用C++的新版本,所以编译这个代码时一定要做这样的事情:
g++-std=c++0x sample.cpp-o sample


<>代码>当你使用C++的新版本C++时,STC++=C++0x非常重要,因为你使用的是C++的新版本,所以编译这个代码时一定要做这样的事情:
g++-std=c++0x sample.cpp-o sample



-std=c++0x
在使用较新版本的c++

时非常重要,无论您传递的是什么g++标志,都不允许使用该语法。最简单的解决方案是只使用-std=c++0x或-std=gnu++0x@Corbin数组是否允许使用它们?@SethCarnegie我并不确定,但错误/警告似乎明确暗示了这一点。我可以想象编译器只是在堆栈上创建一个临时数组,然后默默地传递它。@SethCarnegie这就是你要说的吗@是的,我就是这么说的。显然这是不允许的。不管你传递的是什么g++标志,都不允许这种语法。最简单的解决方案是只使用-std=c++0x或-std=gnu++0x@Corbin数组是否允许使用它们?@SethCarnegie我并不确定,但错误/警告似乎明确暗示了这一点。我可以想象编译器只是在堆栈上创建一个临时数组,然后默默地传递它。@SethCarnegie这就是你要说的吗@是的,我就是这么说的。显然这是不允许的。我更喜欢这个链接。更正式一点:@chrisok,我已经在帖子中添加了这个。谢谢Pubby。但是参数不是数组而是列表,所以我不能使用我已经在使用的constSet[I]之类的东西。还有其他方法可以接受这种构造吗?@ednincer你可以尝试使用可变参数,你可以像
setd(-4,3,01002000)那样构造它。或者你也可以做一些类似于Boost的事情@Pubby,甚至更好,C++风格的可变模板;)我更喜欢这个链接。更正式一点:@chrisok,我已经在帖子中添加了这个。谢谢Pubby。但是参数不是数组而是列表,所以我不能使用我已经在使用的constSet[I]之类的东西。还有其他方法可以接受这种构造吗?@ednincer你可以尝试使用可变参数,你可以像
setd(-4,3,01002000)那样构造它。或者你也可以做一些类似于Boost的事情@Pubby,甚至更好,C++风格的可变模板;)使用-std=c++0x编译将删除警告,但我必须将第二个参数更改为初始值设定项列表以删除错误,并且,更改其中的所有代码…使用-std=c++0x编译将删除警告,但我必须将第二个参数更改为初始值设定项列表以删除错误,并且,更改其中的所有代码。。。