是否可以将文本的大括号数组作为构造函数中的参数发送

Is it possible to send a curly braced array of literals as a parameter in a Constructor?

本文关键字:构造函数 参数 数组 文本 是否      更新时间:2023-10-16

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

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[])

感谢您的帮助

这在

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

顺便说一下,你的构造函数实际上是在接受指针,而不是数组。

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

使用较新版本的 C++ 时,-std=c++0x很重要