C'est un peu difficile à expliquer mais je ferai de mon mieux pour l'expliquer. Je fais une API Gui pour les jeux et elle a des thèmes.Promouvoir la réutilisation de code pour cette situation
D'abord je vais vous expliquer comment fonctionnent les Widgets.
Un bouton par exemple, hérite de Widget. Les thèmes fonctionnent de manière similaire.
ButtonTheme hérite de WidgetTheme.
l'intérieur de chaque classe de widget, il est une instance de son thème correpondant.
classe Widget a:
private:
static WidgetTheme widgetTheme;
public:
static WidgetTheme& getWidgetTheme();
classe bouton
a:
private:
static ButtonTheme buttonTheme;
public:
static ButtonTheme& getButtonTheme();
le constructeur Widget, se construit à partir de son thème ex:
Widget()
{
setFont(getWidgetTheme().getFont());
}
le bouton, héritant de WidgetTheme , doit faire les mêmes parce que le widget interne ne sait pas construire à partir de ButtonTheme, donc mon bouton finit par avoir à faire:
Button()
{
setFont(getButtonTheme().getFont());
setButtonPadding(getButtonTheme().getButtonPadding());
}
C'est où mon problème est. Il me semble vraiment erroné que je doive réécrire tous les WidgetTheme et les rediriger vers les paramètres de ButtonTheme pour Widget. Si je ne fais pas cela, un SuperButton hériterait des styles de Button qui hériteraient aussi des styles de Widget, mais ce que je veux c'est que SuperButton utilise sa version de ButtonTheme et WidgetTheme car SuperButtonTheme hériterait de ButtonTheme et de WidgetTheme.
Est-il possible que je pourrais revoir cela pour que le constructeur ne dispose que de définir les parties du thème qu'il apporte, et ne pas avoir à mettre ceux de ses parents?
Merci
A condition que toutes les fonctions du thème soient virtuelles. – Dialecticus
Cela pourrait-il fonctionner avec des références, ex, renvoyant un ButtonTheme &? – jmasterx