1. ホーム
  2. c++

[解決済み] error: パラメータ 1 に与えられたデフォルトの引数

2022-08-04 20:57:56

質問

以下のコードで、このようなエラーメッセージが表示されます。

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