如何解决没有用于调用 Employee::Employee() 错误的匹配函数
当我在子类“Manager”中声明构造函数时,我认为我做错了什么。 不明白是不是两个类之间的继承问题。
员工.h
#ifndef EMP_IMP_H_INCLUDED
#define EMP_IMP_H_INCLUDED
#include<string>
using namespace std;
class Employee
{
private:
string name;
int salary;
public:
Employee(string n,int s){name=n; salary=s;};
virtual ~Employee() {}
//GetName();
//GetSalary();
//virtual PrintInfo();
};
class Manager:public Employee
{
private:
int bonus;
public:
Manager(string n,int s,int b){name=n;salary=s;bonus=b;};
virtual ~Manager() {};
//GetBonus();
//PrintInfo();
};
#endif // EMP_IMP_H_INCLUDED
main.cpp
#include <iostream>
#include <string>
#include "Nodo.h"
#include "EMP_IMP.h"
using namespace std;
int main(){
Employee *emp1=new Employee (string("ciro esposito",1000));
Employee *emp2=new Employee(string("Gennaro Espostio"),2000);
Employee *emp3=new Manager(string("Carmine Espostio"),2000,2000);
Employee *emp4=new Manager(string("Salvatore Espostio"),3000,3000);
}
解决方法
class Manager
的构造函数必须将 n
和 s
参数传递给基类构造函数,而不是直接初始化基类数据成员。此外,虽然在构造函数体中赋值 bonus = b;
是有效的,但最好也将它放在初始化列表中:
Manager(string n,int s,int b) : Employee(n,s),bonus(b){}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。