Error: 参数1的默认参数

下面的代码显示了这个错误消息:

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

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

123080 次浏览

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

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

我最近犯了一个类似的错误,我就是这样解决的。

当有一个函数原型和定义

例如:

int addto(int x, int y = 4);


int main(int argc, char** argv) {
int res = addto(5);
}


int addto(int x, int y) {
return x + y;
}