如何修复C ++中的“没有匹配的函数来调用:”错误

时间:2019-05-22 19:36:38

标签: c++ eclipse inheritance constructor

我正在编写一个工资报表程序,当我遇到这个奇怪的错误时 纯属病毒继承。

我已经检查了是否在基类或其他任何地方犯了一些错误,但是找不到。

基类:

class abrechnung {
public:
    abrechnung(int periode, mitarbeiter& mitarbeiter);
    virtual ~abrechnung();
    int getPeriode();
    mitarbeiter getMitarbeiter();
    virtual double getVerdienst()=0;
    std::string toString();
private:
    int periode;
    mitarbeiter arbeiter;
};

派生类:

class gehaltsAbrechnung: public abrechnung {
public:
    gehaltsAbrechnung(int periode, mitarbeiter arbeiter, double gehalt);
    virtual ~gehaltsAbrechnung();
    double getVerdienst();
private:
    double gehalt;
};

gehaltsAbrechnung::gehaltsAbrechnung(int periode, mitarbeiter arbeiter,                                     
double gehalt): periode(periode), arbeiter(arbeiter), gehalt(gehalt) {}

意外的错误消息是:

no matching function for call to 'abrechnung::abrechnung()'
class 'gehaltsAbrechnung' does not have any field named 'periode'
class 'gehaltsAbrechnung' does not have any field named 'arbeiter'

我做错了什么,该如何解决?

1 个答案:

答案 0 :(得分:1)

您应该调用基类构造函数,而不要尝试在派生类中初始化基类字段(不允许):

gehaltsAbrechnung::gehaltsAbrechnung(int periode, mitarbeiter arbeiter,
    double gehalt): abrechnung(periode, arbeiter), gehalt(gehalt) {}

mitarbeiter也应该以{{1​​}}的形式传递