其他类中的枚举类的二传手和获取器



我有基类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传递。 我想做的是:

  1. 在雇用新员工时设置具体状态,例如"Worker"。

    void hireEmployee(vector<shared_ptr<Employee>>& sourceEmployee) {
    sourceEmployee.emplace_back(new concreteEmployee(fillName, fillSurname));
    sourceEmployee.back()->status = ???
    

    我想这样做,而不是在concreteEmployee等中使用std::string Status = "Worker"字段。 和经典的二传手/吸盘手。

  2. 我想从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

最新更新