web-dev-qa-db-fra.com

erreur: argument par défaut donné pour le paramètre 1

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é.

82
pocoa

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){
}
179
Yacoby