次の C++ 設計に関する質問を解決するのを手伝ってください
Class Office
{
std::list<Employees *> m_Employees;
string m_Address;
void AddEmployee(Employees *employee);
string GetAddress();
}
Class SalesOffice : public Office
{
int m_TotalEmployees_SalesPerYear;
int GetSalesPerYear();
}
Class FinanceOffice : public Office
{
int m_TotalEmployees_ProfitPerYear;
int GetProfitPerYear();
}
Class BookKeepingOffice : public Office
{
int m_TotalEmployees_RecordsPerYear;
int GetRecordsPerYear();
}
Class Employees
{
int id;
int GetID();
}
Class SalesEmployees : public Employees
{
int m_SalesPerYear;
int GetEmployeeSalesPerYear();
}
Class FinanceEmployees : public Employees
{
int m_ProfitPerYear;
int GetEmployeeProfitPerYear();
}
Class BookKeepingEmployees : public Employees
{
int m_RecordsPerYear;
int GetEmployeeRecordsPerYear();
}
クラスオフィスには、クラス従業員のリストがあります。この複合関係は変更できません。どうやら、どのタイプのオフィスも従業員しか知らないようです。質問: SalesOffice の GetSalesPerYear はどのようにして GetEmployeeSalesPerYear() にアクセスできますか? 注: 各オフィスの従業員を型キャストしたくありません。デザインとデザインパターンに関する提案はありますか?