Je reçois ce message d'erreur avec le code ci-dessous:
class Money {
public:
Money(float amount, int moneyType);
string asString(bool shortVersion=true);
private:
float amount;
int moneyType;
};
J'ai d'abord pensé que les paramètres par défaut ne sont pas autorisés en tant que premier paramètre en C++ mais il est autorisé.
Vous redéfinissez probablement le paramètre par défaut dans l'implémentation de la fonction. Il ne doit être défini que dans la déclaration de fonction.
//bad (this won't compile)
string Money::asString(bool shortVersion=true){
}
//good (The default parameter is commented out, but you can remove it totally)
string Money::asString(bool shortVersion /*=true*/){
}
//also fine, but maybe less clear as the commented out default parameter is removed
string Money::asString(bool shortVersion){
}