עניין של עיצוב.
נאמר אני בונה תוכנה ואני רוצה שהיא לא תהיה תלויה בUI שלה. זאת אומרת כל הדברים שקשורים לUI אני יכול לעשות בQt, GTK, או סתם console, בצור מודולים ולא לשנות אף שורה בקוד. עכשיו, ניסיתי לעשות דבר כזה אבל יש בעיות אם ההורשה. אולי אפשר לפתור את העניין הזה אם virtual base classes אבל אני לא ממש רוצה להכנס לכל זה. הנה קוד לדוגמא של הבעיה, אולי יש למישהו רעיון איך לעשות את זה.
נאמר אני בונה תוכנה ואני רוצה שהיא לא תהיה תלויה בUI שלה. זאת אומרת כל הדברים שקשורים לUI אני יכול לעשות בQt, GTK, או סתם console, בצור מודולים ולא לשנות אף שורה בקוד. עכשיו, ניסיתי לעשות דבר כזה אבל יש בעיות אם ההורשה. אולי אפשר לפתור את העניין הזה אם virtual base classes אבל אני לא ממש רוצה להכנס לכל זה. הנה קוד לדוגמא של הבעיה, אולי יש למישהו רעיון איך לעשות את זה.
//interface.h class Window { public: virtual void doRegularStuff() = 0; virtual ~Window() {} }; class SpecialWindow { public: virtual void doSpecialStuff() = 0; virtual ~SpecialWindow() {} } class TheProgram { public: void MakeYourselfUsefulAndDoStuff() { SpecialWindow *sw = createSpecialWindow(); sw->doSpecialStuff(); } protected: virtual SpecialWindow *createSpecialWindow() = 0; } //Qt implementation on the interface. class QtWindow : public QWidget, public Window { public: void doRegularStuff() { //... } }; class QtSpecialWindow : public QtWindow, public SpecialWindow { public: void doSpecialStuff() { //... } } int main() { TheProgram *prog = new QtTheProgram; prog->MakeYourselfUsefulAndDoStuff(); return 0; }