在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);
}