/* * Manager.h Exercise P-E-M-C, CRTP, Step 3. */ #ifndef MANAGER_H #define MANAGER_H #include "CRN.h" #include "Date.h" #include "Employee.h" #include #include namespace IDA_Person { class Manager : public Person_Cloneable { public: Manager(const std::string& name, const CRN& crn, const IDA_Date::Date& e_date, int e_number, double salary, int dept); ~Manager() = default; std::string str() const override; void add_department_member(Employee* ep) const; void remove_department_member(int e_number) const; void print_department_list(std::ostream&) const; void raise_salary(double percent) const; protected: friend Person_Cloneable; Manager(const Manager&) = default; private: Manager& operator=(const Manager&) = delete; // Manager does not own the Employee objects - no cleanup required mutable std::map dept_members_; }; } // namespace IDA_Person #endif