错误:为参数1给出的默认参数

我收到以下代码的错误消息:

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

首先,我认为在C ++中不允许默认参数作为第一个参数,但它是允许的。

您可能重新定义了函数实现中的默认参数。 它只能在函数声明中定义。

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