Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/135.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在c++; 最近通过完成Cigko.Org任务开始学习C++。我现在的主要问题是验证解决方案,因此我考虑使用assert()如下: assert(index_power({1, 2, 3, 4}, 2) == 9);_C++ - Fatal编程技术网

在c++; 最近通过完成Cigko.Org任务开始学习C++。我现在的主要问题是验证解决方案,因此我考虑使用assert()如下: assert(index_power({1, 2, 3, 4}, 2) == 9);

在c++; 最近通过完成Cigko.Org任务开始学习C++。我现在的主要问题是验证解决方案,因此我考虑使用assert()如下: assert(index_power({1, 2, 3, 4}, 2) == 9);,c++,C++,问题是,我总是会说: error: cannot convert ‘<brace-enclosed initializer list>’ to ‘int*’ for argument ‘1’ to ‘int index_power(int*, int)’ assert(index_power({1, 2, 3, 4}, 2) == 9); 错误:无法将参数“1”的“”转换为“int*”再转换为“int index\u power(int*,int)” 断言(指数幂({1,2,3

问题是,我总是会说:

error: cannot convert ‘<brace-enclosed initializer list>’ to ‘int*’ for argument ‘1’ to ‘int index_power(int*, int)’  
assert(index_power({1, 2, 3, 4}, 2) == 9);
错误:无法将参数“1”的“”转换为“int*”再转换为“int index\u power(int*,int)”
断言(指数幂({1,2,3,4},2)==9);

是否有一种方法可以将未声明的数组作为函数参数传递,或者每次我要像这样使用assert时都必须声明新数组???

就在这里,您当前有一个用括号括起来的初始化器列表:

assert(index_power({1, 2, 3, 4}, 2) == 9);
列表为:
{1,2,3,4}
。要允许此括号括起的初始值设定项列表,您需要使用允许此方法的库。例如
std::vector
。所以你可以改变你的论点:

int index_power(int* args, int num);


你可以看到更多关于
std::initializer\u list
int-index\u-power(int*,int)
使用
int-index\u-power(std::vector,int)
签名。你需要重载函数(该初始值设定项列表与数组的类型不同。如@πάνταῥεῖ 也就是说,您需要一个
std::vector
,而不是一个原始指针。或者其他一些支持
std::initializer\u list
的库,例如
std::list
std::vector
可以使用匹配的
std::initializer\u list
直接初始化。无需
v.insert(v.end(),li.begin(),li.end())
@πνταῥεῖ 就像
std::vector v(initializer_list);
std::vector v(li);
then。更新的代码更改
int index_power(std::vector<int>, int num);
MyClass(std::initializer_list<int> li) {
  std::vector<int> v(li);
}