שאלת עיצוב (++C)
יש לי שתי היררכיות של ירושה: ID - שכוללת את EmployeeID (מחלקת בסיס אבסטרקטית), ManagerID ו-ClerkID (יורשות ממחלקת הבסיס). Report - שכוללת את Report (מחלקת בסיס), ManagerReport ו-ClrekReport (יורשות מ-Report). חוץ מאלה יש לי מחלקת ReportDB שהיא class template שמקבל את סוג ה-report. עכשיו אני רוצה ליצור מחלקות Employee שמבוססות על מחלקות ה-ID וה-Report. אני אצטרך מחלקת Manager ומחלקת Clerk. אני צריך להיות מסוגל לאכסן סוגים שונים של Employee באותו STL container (עם smart pointer). כמו כן, אני צריך להיות מסוגל לגשת ל-ID המתאים בזמן ריצה. משהו כזה -
. חשבתי להחזיק מצביע ל-ID במחלקת בסיס (Emplyoee), ואז כל מחלקה שיורשת מ-Employee מאתחלת את המצביע ב-ID חדש. הבעיה היא שמי שמשתמש במחלקה יצטרך לעשות הרבה הסבות במקרה שהוא רוצה להשתמש בתכונות מורחבות של ID ספציפי. אני גם קצת מסתבך עם המיקום של ReportDB. בקיצור, אם מישהו יוכל לכוון אותי או לתת רמז אני אשמח. תודה מראש.
יש לי שתי היררכיות של ירושה: ID - שכוללת את EmployeeID (מחלקת בסיס אבסטרקטית), ManagerID ו-ClerkID (יורשות ממחלקת הבסיס). Report - שכוללת את Report (מחלקת בסיס), ManagerReport ו-ClrekReport (יורשות מ-Report). חוץ מאלה יש לי מחלקת ReportDB שהיא class template שמקבל את סוג ה-report. עכשיו אני רוצה ליצור מחלקות Employee שמבוססות על מחלקות ה-ID וה-Report. אני אצטרך מחלקת Manager ומחלקת Clerk. אני צריך להיות מסוגל לאכסן סוגים שונים של Employee באותו STL container (עם smart pointer). כמו כן, אני צריך להיות מסוגל לגשת ל-ID המתאים בזמן ריצה. משהו כזה -
smart_ptr<Employee> e1, e2; // gets values from a container if ( e1->getID() == e2->getID() ) ;
חוץ מזה, כל סוג של Emplyoee צריך לאכסן ReportDB שמתאים לו. הבעיה היא שאני מסתבך עם בחירת המימוש