C++ C++;:“派生类”;没有匹配的构造函数“;错误
我做这个作业已经有一段时间了。以下是说明: 您需要设计一个名为Employee的抽象类,其成员为 如下所示(对其进行保护): 数据成员:字符*名称,长整型ID 两个构造函数:一个默认构造函数//初始化数据memebrs以 默认值和复制构造函数 方法:setPerson(char*n,long int id)//允许用户设置 每个人的信息一个名为Print()//的函数应该是 虚拟函数,用于打印类的数据属性。和 析构函数 还定义两个派生自Employee类的类,称为 经理兼秘书。每个类都应从 基类,并有自己的数据成员和成员函数。 经理应该有一个名为degree的数据成员 本科学位(如文凭、学士、硕士、博士) 秘书应该有她的合同(可以是1/0的布尔值 (永久/临时) 派生类的所有成员函数都应从其 基类 编写以下main()来测试类C++ C++;:“派生类”;没有匹配的构造函数“;错误,c++,class,derived-class,C++,Class,Derived Class,我做这个作业已经有一段时间了。以下是说明: 您需要设计一个名为Employee的抽象类,其成员为 如下所示(对其进行保护): 数据成员:字符*名称,长整型ID 两个构造函数:一个默认构造函数//初始化数据memebrs以 默认值和复制构造函数 方法:setPerson(char*n,long int id)//允许用户设置 每个人的信息一个名为Print()//的函数应该是 虚拟函数,用于打印类的数据属性。和 析构函数 还定义两个派生自Employee类的类,称为 经理兼秘书。每个类都应从 基类
int main() {
Employee * p = new Manager(“Bruce Lee”, 0234567, “Dr.”);
P.print();
Secretary p2;
p2.setPerson(“Wilma Jones”, 0341256, “permanent”);
delete p;
p = & p2;
p.Print();
return 0;
}
这是我到目前为止所想到的一切,但我很确定它充满了错误,我的参数和变量类型都不正确
#include <iostream>
using namespace std;
class Employee{
protected:
char *name;
long int ID;
public:
Employee();
Employee(Employee&);
void setPerson(char * n, long int eID) {
name = n;
ID = eID; };
virtual void Print(){
cout << "Name: " << name << endl;
cout << "ID: " << ID << endl; };
};
class Manager: public Employee {
protected:
char *degree;
public:
void setPerson(char * n, long int eID, char * d){
name = n;
ID = eID;
degree = d;
};
void Print() {
cout << "Name: " << name << endl;
cout << "ID: " << ID << endl;
cout << "Degree: " << degree << endl;
};
};
class Secretary: public Employee {
protected:
bool contract;
public:
void setPerson(char * n, long int eID, string c){
name = n;
ID = eID;
if (c == "permanent") contract = true;
else contract = false;
};
void Print(){
cout << "Name: " << name << endl;
cout << "ID: " << ID << endl;
cout << "Contract: " << contract << endl;
};
};
int main() {
Employee * P = new Manager("Bruce Lee", 0234567, "Dr.");
P.Print();
Secretary P2;
P2.setPerson("Wilma Jones", 0341256, "permanent");
delete P;
P = & P2;
P.Print();
return 0;
}
#包括
使用名称空间std;
班级员工{
受保护的:
字符*名称;
长int-ID;
公众:
雇员();
员工(员工&),;
void setPerson(字符*n,长整数eID){
name=n;
ID=eID;};
虚拟空打印(){
cout您得到的错误非常直接:您没有任何Manager
(或Employee
)的构造函数将字符串、整数(?)和字符串作为参数。您已经声明了构造函数Employee,但没有定义它。
看看你声明的publc下的employee类
Employee();
Employee(Employee&);
但您尚未定义函数。您需要
Employee :: Employee()
{
bla bla bla
}
另一个用于另一个签名。第57行和第62行的错误,其中显示p.Print();
没有给出您提到的错误。更可能的是,他们给出了“.Print”左边的,必须有class/struct/union
错误消息。@RawN my第62行与这里的第62行不同(因为Xcode在开头添加了注释)这就是为什么我指定它是主代码的第一行,但你是正确的,因为打印函数也不工作。我没有提到它,因为我认为这是管理器未初始化时的错误。不过我应该使用char*和int作为参数。这让我很困惑。另外,我将所有字符都改为stri它仍然给我同样的错误。@hopillium你给Manager添加了一个“Manager(…)”构造函数了吗?