2010-03-30 4 views
60

Я получаю сообщение об ошибке на код ниже:ошибка: по умолчанию аргумент, приведенный для параметра 1

class Money { 
public: 
    Money(float amount, int moneyType); 
    string asString(bool shortVersion=true); 
private: 
    float amount; 
    int moneyType; 
}; 

Сначала я думал, что параметры по умолчанию не допускается в качестве первого параметра в C++, но это разрешено.

+0

Не могли бы вы дать более подробную информацию? –

+0

какой компилятор вы используете? –

+0

Я использую Eclipse CDT с MinGW 5.1.6 в Windows. – pocoa

ответ

134

Возможно, вы переопределяете параметр по умолчанию при реализации функции. Его следует определять только в объявлении функции.

//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){ 
} 
+0

Теперь он говорит: string Деньги :: asString() 'не соответствует ни одному классу 'Деньги' – pocoa

+1

@pocoa Вам все равно нужно сохранить параметр' bool shortVersion', просто удалите или закомментируйте '= true' – Yacoby

+0

@Yacoby: Спасибо, ты был прав. Это не имеет никакого смысла, очень запутанно. – pocoa

 Смежные вопросы

  • Нет связанных вопросов^_^