133 votes

error : 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;
};

Tout d'

abord, je pensais que les paramètres par défaut ne sont pas autorisés en tant que premier paramètre en C++, mais il est autorisé.

289voto

Yacoby Points 29771

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

4voto

awuah Points 26

J'ai fait une erreur similaire récemment. C'est comme ça que je l'ai résolue.

lorsque vous avez un prototype de fonction et une définition. le paramètre par défaut n'est pas spécifié dans la définition.

par exemple :

int addto(int x, int y = 4);

int main(int argc, char** argv) {
    int res = addto(5);
}

int addto(int x, int y) {
    return x + y;
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X