Estou recebendo esta mensagem de erro com o código abaixo:
class Money {
public:
Money(float amount, int moneyType);
string asString(bool shortVersion=true);
private:
float amount;
int moneyType;
};
Primeiro pensei que os parâmetros padrão não são permitidos como um primeiro parâmetro em C ++, mas são permitidos.
Respostas:
Você provavelmente está redefinindo o parâmetro padrão na implementação da função. Deve ser definido apenas na declaração da função.
fonte
bool shortVersion
parâmetro, basta remover ou comentar o= true
std::string Money::asString(bool)
. Observe que ele nem inclui o nome do parâmetro. E, de fato, você pode usar nomes diferentes na declaração do que na definição. (Isso é importante em um grande projeto quando - por qualquer motivo - você deseja alterar o nome na definição, mas não deseja recompilar milhões de linhas de código que dependem da declaração.)