我有这个错误。 “错误:没有匹配的函数来调用‘Employee::Employee()’”。当我写一个关于“教师类(class)”的构造函数时,我遇到了这个错误。 你能帮我解决这个问题吗?我乞求帮助:(。 还有2个类。 “日期”和“人”。 “Person”是“Employee”的父类(super class)。
员工.h
#ifndef GK_EMPLOYEE_H
#define GK_EMPLOYEE_H
#include "GK_Person.h"
class Employee:public Person
{
public:
Employee(char* name,char* surname,char* sex,char* pob, Date* dob,Date* start,char* title,int salary,bool fulltime =true);// start refers to dynamic memory
//virtual ~Employee();
void SetTitle(char* title);
friend ostream& operator<<(ostream&,const Employee&);
friend class Faculty;
private:
char* m_title;
int m_salary;
bool m_fulltime;
Date* m_start;// date started working
};
#endif // GK_EMPLOYEE_H
员工.cpp
#include "GK_Employee.h"
Employee::Employee(char* name,char* surname,char* sex,char* pob, Date* dob,Date* start,char* title,int salary,bool fulltime/*=true*/){
m_name=name;
m_surname=surname;
m_sex=sex;
m_pob=pob;
m_dob=dob;
m_start=start;
m_title=title;
m_salary=salary;
m_fulltime=fulltime;
}
void Employee::SetTitle(char* title){
m_title = title;
}
教师.h
#ifndef GK_FACULTY_H
#define GK_FACULTY_H
#include "GK_Employee.h"
class Faculty :public Employee
{
public:
Faculty(char* name,char* surname,char* sex,char* pob, Date* dob,Date* start,int level,int salary,Date* dolat,bool fulltime = true);
//virtual ~Faculty();
char GetType() const{return'F';}
void Promote(Date* dt);
friend ostream& operator<<(ostream&,const Faculty&);
private:
Date* m_dolat;// date of last academic title owned
int m_level;// 0 for Dr., 1 for Ass.Prof.Dr., 2 for Assoc.Prof.Dr. and 3 for Prof.Dr.
};
#endif // GK_FACULTY_H
教师.cpp
#include "GK_Faculty.h"
Faculty::Faculty(char* name,char* surname,char* sex,char* pob, Date* dob,Date* start,int level,int salary,Date* dolat,bool fulltime/*= true*/){
}
最佳答案
由于Faculty
派生自Employee
,您需要在Faculty
构造函数中初始化Employee
的成员。这必须通过调用 Employee
的构造函数来完成。如果 Employee
有一个默认构造函数(即没有任何参数的构造函数),那么编译器会隐式地为你做这件事。但是 Employee
只定义了以下构造函数:
Employee(char* name,char* surname,char* sex,char* pob, Date* dob,Date* start,char* title,int salary,bool fulltime =true);// start refers to dynamic memory
编译器无法确定要传递给此 c'tor 的参数,因此您需要从 Faculty
c'tor 内部自行调用它。像这样:
#include "GK_Faculty.h"
Faculty::Faculty(char* name,char* surname,char* sex,char* pob, Date* dob,Date* start,int level,int salary,Date* dolat,bool fulltime/*= true*/)
: Employee(name,surname,sex,pob,dob,start,"mytitle",salary,fulltime)
{
}
关于c++ - "error:no matching function call to ...",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22510228/