enum class inside other class 的 setter 和 getter

setters and getters for enum class inside other class

我有基础 class Employee 和派生 class 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" 字段。 和 classic setter/getter。

  2. 我想从 Employee class 获取 concreteEmployee 的状态并将其打印在某处。我有派生对象的向量(使用 std::shared_ptr)并且想获得这样的状态?

    void employeeShowcase(const vector<shared_ptr<Employee>>& sourceEmployee) {
        cout << sourceEmployee[index]->getStatus()
        ... // output should be like i.e "Worker"
    }
    

如果您的员工状态应该对您的 class 的消费者可见,那么这意味着您必须在 Employee 的范围内定义该枚举,而不是 ConcreteEmployee