1

次の 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() にアクセスできますか? 注: 各オフィスの従業員を型キャストしたくありません。デザインとデザインパターンに関する提案はありますか?

4

1 に答える 1

0

int GetEmployeeSalesPerYear();の仮想メソッドとして定義しEmployee、0 を返し、 SalesEmployees再実装する必要があります。

于 2013-03-22T14:20:25.850 に答える