error:为参数1指定的默认参数

时间:2010-03-30 13:53:29

标签: c++ function member-functions default-arguments

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

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

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

1 个答案:

答案 0 :(得分:170)

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

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