我有基类Employee
和派生类concreteEmployee
。
class Employee {
virtual void &getStatus() {} ??
}
class concreteEmployee : public Employee {
public:
enum class Status {
Intern,
Worker,
Manager
};
Status status;
void setStatus() {
?????
}
... &getStatus() { // virtual from Employee
return Status; ???
}
我的指针向量是vector<shared_ptr<Employee>> Firm;
的,我正在通过引用sourceEmployee
传递。 我想做的是:
在雇用新员工时设置具体状态,例如"
Worker
"。void hireEmployee(vector<shared_ptr<Employee>>& sourceEmployee) { sourceEmployee.emplace_back(new concreteEmployee(fillName, fillSurname)); sourceEmployee.back()->status = ???
我想这样做,而不是在
concreteEmployee
等中使用std::string Status = "Worker"
字段。 和经典的二传手/吸盘手。我想从
Employee
类中获取concreteEmployee
的状态并将其打印在某个地方。我有派生对象的向量(使用std::shared_ptr
(,并希望获得这样的状态?void employeeShowcase(const vector<shared_ptr<Employee>>& sourceEmployee) { cout << sourceEmployee[index]->getStatus() ... // output should be like i.e "Worker" }
如果你的员工状态应该对你的类的消费者可见,那么这意味着你必须在Employee
范围内定义该枚举,而不是ConcreteEmployee