继承代码出现C++错误(没有匹配的构造函数)
C++ Error with inheritence code (no matching constructor)
我正在为我的计算机科学课做一项基于继承的作业,我一直在处理一个似乎无法修复的错误。如果你们中的任何一个人能带我走过错误的地方,那就太好了!非常感谢。
这是我的错误报告
main.cpp:199:21:错误:没有用于初始化"Faculty"的匹配构造函数…教员("南希","圣贝纳迪诺","555-555-5555","nancy@coolpeople.com"、"CSE"、"5000."、"September 27th"、"Professor"、"visiting");
main.cpp:169:10:注意:候选构造函数不可行:需要0个参数,但提供了9个Faculty::Faculty()^
main.cpp:175:10:注意:候选构造函数不可行:需要10个参数,但提供了9个教师::教师(字符串n,字符串a,字符串t,字符串e,字符串o,字符串。。。^
main.cpp:156:7:注意:候选构造函数(隐式复制构造函数)不是可行:需要1个参数,但提供了9个班级教员:公共雇员
这是我的代码:
#include <string>
#include <iostream>
#include <vector>
#include <cstdlib>
using namespace std;
class Person
{
public:
Person();
Person(string n, string a, string t, string e);
string getName();
string getAddress();
string getTelephone();
string getEmail();
virtual string whatami();
private:
string n;
string a;
string t;
string e;
};
Person::Person(){}
Person::Person(string n, string a, string t, string e)
{
this->n=n;
this->a=a;
this->t=t;
this->e=e;
}
string Person::getName()
{
return n;
}
string Person::getAddress()
{
return a;
}
string Person::getTelephone()
{
return t;
}
string Person::getEmail()
{
return e;
}
string Person::whatami()
{
return "Person";
}
class Student : virtual public Person
{
public:
Student();
Student(string n, string a, string t, string e, string s);
string getStatus();
virtual string whatami(){return "Student";};
private:
string status;
};
Student::Student()
{
string status = "";
}
Student::Student(string n, string a, string t, string e, string s) : Person(n,a,t,e)
{
status = s;
}
string Student::getStatus()
{
return status;
}
class Employee : virtual public Person
{
public:
Employee();
Employee(string n, string a, string t, string e, string o, string p, string d);
string getOffice();
string getPayment();
string getDatehired();
virtual string whatami(){return "Employee";};
private:
string office;
string payment;
string datehired;
};
Employee::Employee()
{
string office = " ";
string payment = " ";
string datehired = " ";
}
Employee::Employee(string n, string a, string t, string e, string o, string p, string d) : Person(n,a,t,e)
{
office = o;
payment = p;
datehired = d;
}
string Employee::getOffice()
{
return office;
}
string Employee::getPayment()
{
return payment;
}
string Employee::getDatehired()
{
return datehired;
}
class Staff : virtual public Employee
{
public:
Staff();
Staff(string n,string a, string t, string e, string o, string s, string d, string j);
string getJobtitle();
virtual string whatami(){return "Staff";};
private:
string jobtitle;
};
Staff::Staff()
{
jobtitle = "";
}
Staff::Staff(string n, string a, string t, string e, string o, string p, string d, string j) : Person(n,a,t,e),Employee(n,a,t,e,o,p,d)
{
jobtitle = j;
}
string Staff::getJobtitle()
{
return jobtitle;
}
class Faculty : public Employee
{
public:
Faculty();
Faculty(string n, string a, string t, string e, string o, string p, string d, string j, string r, string f);
string getRank();
string getStatus();
virtual string whatami(){return "Faculty";};
private:
string rank;
string fstatus;
};
Faculty::Faculty()
{
rank = "";
fstatus = "";
}
Faculty::Faculty(string n, string a, string t, string e, string o, string p, string d, string j, string r, string f) : Person(n,a,t,e),Employee(n,a,t,e,o,p,d)
{
rank = r;
fstatus = f;
}
string Faculty::getRank()
{
return rank;
}
string Faculty::getStatus()
{
return fstatus;
}
int main()
{
vector<Person*> v;
v.push_back(new Person("John Adams","Boston","617-555-0000","john@adams.com"));
v.push_back(new Student("John Quincy Adams","Boston","617-555-0000","johnq@adams.com","senior"));
v.push_back(new Staff("Samuel Adams","Boston","617-555-BEER","sam@adams.com","brewhouse 1","1000","9-15-1764","Brewer"));
v.push_back(new Faculty("Nancy","San Bernardino","555-555-5555","nancy@coolpeople.com","CSE", "5000.","September 27th","Professor","visiting"));
for (int i=0; i<v.size(); i++)
{
cout << v[i]->getName() << " " <<v[i]->getAddress() << " " << v[i]->getTelephone() << " " << v[i]->getEmail() << " " << classify(v[i]) <` endl;
}
return 0;
}
如果能得到任何帮助,我将不胜感激!!
您的Faculty
构造函数需要10个字符串;你只提供了9个(正如信息所说)。
相关文章:
- 有没有一种代码密度较低的方法来使用非默认构造函数初始化数组?
- 是否可以避免在以下代码中复制/移动构造函数的需要?
- 引入参数化构造函数后显示 LNK 2019 未解析外部符号的代码错误
- 为什么我的代码中没有调用move构造函数
- 基于构造函数的存在禁用代码
- 如何从构造函数返回错误代码?
- 为什么在我的代码中调用复制构造函数而不是移动构造函数?
- 如何基于构造函数参数模板化类成员函数的代码
- C++,处理多个构造函数重载和冗余代码
- 为什么在使用转换构造函数编译代码时需要 const 复制构造函数?
- 该构造函数代码如何将指针作为参数
- 复制赋值和复制构造函数(代码C++的差异)
- 在构造函数代码之前禁用默认类成员初始化
- 以下移动构造函数代码安全吗?
- C++构造函数代码..这叫什么
- 如何更改SWIG生成的CSHARP文件中的构造函数代码
- C++某些构造函数代码之间的区别
- 如何正确编写构造函数代码
- 在全局空间中定义的类的构造函数代码何时运行?
- 从静态构造函数代码调用pthread库时失败