Digamos, eu tenho o seguinte código que usa sum
função, que tem valor padrão para skip_value
argumento. A sum
função usa o valor padrão:
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;
}
}
Como você pode ver, a implementação da função possui um valor padrão 100
para skip_value
o argumento. Eu escrevo o mesmo na declaração da função. No entanto, recebo o erro:
Erro C2572 'soma': redefinição do argumento padrão: parâmetro 1
OK. Eu mudo a declaração da função para o seguinte:
std::optional<int> sum(std::vector<int> nums, int skip_value);
Agora recebo um erro diferente:
Erro C2660 'soma': a função não aceita 1 argumento
Como faço isso direito?