Hello,
Soient l'héritage suivant :
Je voudrais avoir un truc du style :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 struct A { }; struct B : public A { };
Fonctionnellement, ça a l'air de faire l'affaire, sauf que je Foo_A doit contenir des fonctions travaillant sur member (appel de fonctions virtuelles (ou CRTP)...).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 struct Foo_A { A member; }; struct Foo_B : Foo_A { B member; // avec B cachant A };
Je pourrais mettre un pointeur, mais je devrais l'instancier en tant que A dans le constructeur de Foo_A, puis éventuellement le réinitialiser en tant que B dans Foo_B.
Ou alors que Foo_B passe un pointeur de B au constructeur de Foo_A pour un argument qui par défaut serait initialisé par une instanciation de A.
Ça ressemble un peu au patron "Pont", mais ce n'est guère satisfaisant, et peu élégant. En outre, je ferais du dynamique alors que j'ai une connaissance préalable du type de membre souhaité, ce qui devrait conduire à utiliser du statique.
Ce qui peut m'amener aux classes de politique, mais je me retrouve confronté au même problème : la politique de la classe fille devant écraser celle de la classe mère.
J'ai l'impression que la solution est simple, mais que je me suis posé trop de questions, et que ça m'a embrouillé...
Partager