1. ホーム
  2. スクリプト・コラム
  3. その他

[解決済み】c++: オーバーロードされた関数のインスタンスがない

2022-01-02 03:37:17

質問

コードは次のとおりです。

highInterestChecking ヘッダ。

#ifndef H_highInterestChecking
#define H_highInterestChecking
#include "noservicechargechecking.h"
#include <string>

class highInterestChecking: public noServiceChargeChecking
{
public:
    highInterestChecking(std::string =" ",int = 0, double = 0.00, double = 0.00, double = 0.00);
};
#endif

highInterestChecking cpp:

#include "highInterestChecking.h"
using std::string;

highInterestChecking::highInterestChecking(string name, int acct, double bal, int numCheck, double min, double i)
{
    bankAccount::setAcctOwnersName(name);
    bankAccount::setAcctNum(acct);
    bankAccount::setBalance(bal);
    checkingAccount::setChecks(numCheck);
    noServiceChargeChecking::setMinBalance(min);
    noServiceChargeChecking::setInterestRate(i);
}

実行すると、エラーが発生します。

No instance of overloaded function.

は、cppファイルのコンストラクタ名highInterestCheckingの下にあるのですが、何が原因かよくわかりません。 

解決方法は?

ヘッダーに

highInterestChecking(std::string =" ",int = 0, double = 0.00, double = 0.00, double = 0.00);

を取るか 5 引数で、ソースファイルでは

 highInterestChecking::highInterestChecking(string name, int acct, double bal, int numCheck, double min, double i)

                                                                                ^^^^^^^^^^^

を取る。 6 の引数を指定します。どうやら int numCheck はヘッダーの署名と一致しません。