我正在编写一个工资报表程序,当我遇到这个奇怪的错误时 纯属病毒继承。
我已经检查了是否在基类或其他任何地方犯了一些错误,但是找不到。
基类:
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'
我做错了什么,该如何解决?
答案 0 :(得分:1)
您应该调用基类构造函数,而不要尝试在派生类中初始化基类字段(不允许):
gehaltsAbrechnung::gehaltsAbrechnung(int periode, mitarbeiter arbeiter,
double gehalt): abrechnung(periode, arbeiter), gehalt(gehalt) {}
mitarbeiter
也应该以{{1}}的形式传递