最近通过完成checkio.org'任务来开始学习C ++。我现在的主要问题是验证解决方案,所以我想像使用assert()一样:
assert(index_power({1, 2, 3, 4}, 2) == 9);
问题是我总是得到错误说:
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);
有没有办法将未声明的数组作为函数参数传递,或者每次我想使用断言时都必须声明新数组?
答案 0 :(得分:1)
就在这里,你现在有一个带括号的封装的initalizer列表:
require 'cowsay'
x = Cowsay.random_character().class
x.name.split("::")[2]
require 'cowsay'
true
x = Cowsay.random_character().class
Cowsay::Character::Stegosaurus
x.name.split("::")[2]
"Stegosaurus"
列表为:assert(index_power({1, 2, 3, 4}, 2) == 9);
。要允许此大括号括起初始化列表,您需要使用允许此方法的库。例如{1, 2, 3, 4}
。所以你可以改变你的论点:
std::vector
到
int index_power(int* args, int num);
如果您对如何制作自定义括号初始化构造函数感兴趣,可以使用int index_power(std::vector<int>, int num);
:
std::initalizer_list
您可以详细了解MyClass(std::initializer_list<int> li) {
std::vector<int> v(li);
}
here。