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 c'est autorisé.
Réponses:
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.
la source
bool shortVersion
paramètre, il suffit de supprimer ou de commenter le= true
std::string Money::asString(bool)
. Notez qu'il n'inclut même pas le nom du paramètre. Et, en effet, vous pouvez utiliser des noms différents dans la déclaration et dans la définition. (Ceci est important dans un grand projet lorsque - pour quelque raison que ce soit - vous voulez changer le nom dans la définition, mais ne voulez pas recompiler des millions de lignes de code qui dépendent de la déclaration.)