2010-03-30 118 views
60

我收到此錯誤信息與下面的代碼中給出默認參數:錯誤:參數1

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

首先,我認爲默認參數不允許作爲在C++中的第一參數,但它是允許的。

+0

你能否提供更多的細節? – 2010-03-30 13:55:15

+0

你使用什麼編譯器? – 2010-03-30 13:55:31

+0

我在Windows上使用Eclipse CDT和MinGW 5.1.6。 – pocoa 2010-03-30 14:00:54

回答

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 Money :: asString()'與'Money'類中的任何一個不匹配 – pocoa 2010-03-30 13:58:54

+1

@pocoa你仍然需要保持'bool shortVersion'參數,只是刪除或註釋掉'= true' – Yacoby 2010-03-30 14:01:31

+0

@雅各比:謝謝,你是對的。它沒有任何意義,很混亂。 – pocoa 2010-03-30 14:09:12

相關問題