2010-03-30 15 views
60

Dostaję komunikat o błędzie z poniższym kodzie:błąd: domyślnym argumentem podana dla parametru 1

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

Najpierw myślałem, że domyślne parametry nie są akceptowane jako pierwszy parametr w C++, ale to jest dozwolone.

+0

Czy możesz podać nieco więcej szczegółów? –

+0

jakiego kompilatora używasz? –

+0

Używam Eclipse CDT z MinGW 5.1.6 w systemie Windows. – pocoa

Odpowiedz

134

Prawdopodobnie redefiniujesz domyślny parametr w implementacji funkcji. Powinien być zdefiniowany tylko w deklaracji funkcji.

//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

Teraz mówi: ciąg Pieniądze :: asString() "nie pasuje do żadnej w klasie" Pieniądze " – pocoa

+1

@pocoa Nadal musisz zachować parametr' bool shortVersion', wystarczy usunąć lub zakomentować '= true' – Yacoby

+0

@Yacoby: Dzięki, miałeś rację. To nie ma sensu, jest bardzo mylące. – pocoa

Powiązane problemy