c++ - "error:no matching function call to ..."

标签 c++ class inheritance

我有这个错误。 “错误:没有匹配的函数来调用‘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/

相关文章:

java - java中如何从子类对象中调用重写的方法

c++ - 将 char 的值传递给 string 以用于比较

C++继承,如何在基类方法中调用子类方法?

c++ - 如何在main()中调用构造函数?

Swift 类在作用域结束时取消初始化,而不是在上次使用后取消初始化

PHP fatal error : Cannot redeclare class

python - 您如何为用户定义的对象定义类似字典的赋值?

iphone - self 和 super 的区别

c++ - boost::mpl::equal 对于 vector 和 vector_c 总是 false

c++ - 如何确定 CRichEditCtrl 中的文本选择是否具有多种字体大小?