【问题标题】:c++: No instance of overloaded functionc++:没有重载函数的实例
【发布时间】:2013-05-08 14:44:22
【问题描述】:

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

我有错误“没有重载函数的实例”。在 cpp 文件中的构造函数名称 highInterestChecking 下不确定是什么原因导致它我看了一会儿现在似乎找不到错误。也许有人会帮忙?

【问题讨论】:

  • 你需要变量名。您正在为 double 类型的参数赋值,就好像它是参数列表中的变量一样。
  • @RageD:不,没关系。他提供了一个没有名称的参数,然后是该参数的默认值。
  • 你忘记了函数声明中的int numCheck参数。
  • 在头文件中设置默认参数是可以的。
  • @Axilles:很遗憾听到这个消息;这不是 Stack Overflow 应该如何工作的。勇敢发帖!如果你被否决,这是一个学习机会;在这种情况下,您可能会获得支持甚至被接受!

标签: c++ function overloading


【解决方案1】:

在你的标题中:

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 似乎与标头签名不匹配。

【讨论】:

  • 谢谢你,哈哈,我怎么会错过我发誓我数了参数,猜我的眼睛开始走光了,哈哈
  • @EricOudin 这表明您有太多参数。您可以考虑将其中一些捆绑到一个类中。
【解决方案2】:

你在类声明中有这个构造函数:

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

还有这个在类定义中:

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

两个参数列表中的参数类型必须匹配。

【讨论】:

  • 这是误导。它们不需要在词法上“相同”,尽管它们必须描述相同的参数类型列表。
【解决方案3】:
  highInterestChecking::highInterestChecking(string name, int acct, 
                           double bal, int numCheck, double min, double i)
                                       //^^^

在你的类的头文件中不存在,头文件有5个参数,而你在cpp文件中有6个,参数类型好像不匹配,

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-16
    • 2019-08-11
    • 1970-01-01
    • 2014-04-17
    • 2021-10-13
    • 1970-01-01
    相关资源
    最近更新 更多