我正在写一个工资报表的程序,当我纯粹通过病毒继承时,我得到了这个奇怪的错误。
我已经检查了我是否在基类或其他地方犯了一些错误,但我找不到一个。
基类:
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'
我做错了什么?我如何才能改正?
发布于 2019-05-23 03:39:14
您应该调用基类构造函数,而不是尝试在派生类中初始化基类字段(这是不允许的):
gehaltsAbrechnung::gehaltsAbrechnung(int periode, mitarbeiter arbeiter,
double gehalt): abrechnung(periode, arbeiter), gehalt(gehalt) {}
另外,可能应该将mitarbeiter
作为const &
传递
https://stackoverflow.com/questions/56263807
复制相似问题