比如说,我有以下使用sum
函数的代码,该函数具有参数的默认值skip_value
。该sum
函数使用默认值:
import <print>;
import <vector>;
import <optional>;
std::optional<int> sum(std::vector<int> nums, int skip_value = 100);
int main()
{
std::vector<int> nums { 10, 20, 30, 100 };
std::optional<int> result = sum(nums);
if (result.has_value()) {
std::println("sum = {}", result.value());
}
else {
std::println("no results were found");
}
}
std::optional<int> sum(std::vector<int> nums, int skip_value = 100) {
int result { 0 };
for (const auto& num : nums) {
if (num != skip_value)
result += num;
}
if (result == 0) {
return { };
} else {
return result;
}
}
如您所见,函数实现具有参数100
的默认值skip_value
。我在函数声明中写了同样的内容。但是,我收到错误:
错误 C2572“sum”:重新定义默认参数:参数 1
好的。我将函数声明更改为以下内容:
std::optional<int> sum(std::vector<int> nums, int skip_value);
现在我得到不同的错误:
错误 C2660“sum”:函数不接受 1 个参数
我怎样做才正确?