Je n'arrive pas à trouver un meilleur titre... merci d'éditer si vous le pouvez !
class AbstractGUIBase
{
...
};
class GUIConcrete : public AbstractGUIBase
{
...
};
class AbstractApplicationBase
{
AbstractGUIBase *mGUI;
};
class MyApplication : public AbstractApplicationBase
{
GUIConcrete *mGUI;
};
C'est essentiellement la configuration que j'ai... une classe de base d'application fournit une fonctionnalité commune, y compris une référence à une instance de classe de base de GUI mGUI
. mGUI
n'est jamais instancié que dans MyApplication
ou d'autres sous-classes concrètes.
Je ne veux pas redéclarer mGUI
dans les deux classes parce que je finis par faire quelque chose comme super::mGUI = mGUI = new ConcreteGUI()
. Mais je ne veux pas non plus avoir à faire des castings. mGUI
à chaque fois qu'il est utilisé dans MyApplication
.
Y a-t-il un rythme normal ici ? Je pensais que vous pourriez faire un modèle AbstractApplicationBase
sur le type de classe GUI mais je n'aime pas particulièrement la programmation par modèles.
J'utilise MSVC++2008, ce qui signifie que je ne dispose pas des outils modernes les plus sophistiqués.