我正在试图做这个练习:
有不同类型的员工:常规 工人,监事,董事会成员,具体类型 主管
跟踪普通工人类型的对象数量。
每位员工都有自己的姓名,可以自我介绍。
每个员工对象都有自己的工作人员ID,并分配给他 当它被创建
薪水的计算方式取决于具体的类型 雇员。
每位员工都可以拥有直接主管,可以是任何人 主管(这意味着,例如董事会成员可以是 正规工人主管)
现在我已经提出了所有观点,排除了最后一点:
class Employees
{
public:
static int workerid;
int salary;
Employees(){
workerid += 1;
}
void introduce(){
cout << "the name is:" << name << "and surname" << surname << endl;
}
};
int Employees::workerid = 0;
class Supervisors :public Employees{
public:
Supervisors(){
salary = 1000;
}
};
class BoardMembers : public Supervisors{
public:
BoardMembers(){
salary = 1200;
}
};
class RegularWorkers :public Employees{
public:
static int number;
Supervisors *supervisor;
RegularWorkers(Supervisors supervisor){
this->supervisor = &supervisor;
number += 1;
salary = 600;
}
};
int RegularWorkers::number = 0;
(我认为直到最后一点都没问题),但是最后一点我需要一个主管的身份证但是如何让主管或男性主义者分配给正式工作者?
谢谢你&amp;最好的问候
答案 0 :(得分:1)
通过添加Supervisor
Supervisor *supervisor;
然后重载Employee构造函数以接受类型Supervisor
并将它们设置为彼此相等。
Employees(Supervisor *s){
supervisor = s;
workerid += 1;
}
然后您可以使用
访问主管的IDsupervisor->ID
此外,您可能希望包含name
和surname
作为成员变量,并在构造函数中初始化它们。要添加到上一个构造函数,它可能看起来像这样。
Employees(Supervisor *s, string sName, string sSurname){
name = sName;
surname = sSurname;
supervisor = s;
workerid += 1;
}