Bonjour à tous !
Je m'adresse à vous grand développeurs C++. Je sais que sur developpez.com, j'aurais toujours une réponse claire et précise, ce qui est extrêmement plaisant.
Donc, j'ai un petit problème de conception.
Imaginons :
J'ai deux classes A et B abstraites.
Je possède aussi une classe AB qui se trouve être implémenté de cette manière.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 class A { public: virtual void f() const = 0; }; class B { public: virtual void g() const = 0; };
La classe AB hérite publiquement de A et de B.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 class AB : public A, public B { public: void f() const {cout << "Je suis la fonction f de AB." << endl;} void g() const {cout << "Je suis la fonction g de AB" << endl;} };
Mais maintenant les choses se corsent. Je décide d'implémenter le design pattern "composite" (vous l'appelez ainsi sur ce site).
Où clone est la fonction qui fait une copie profonde de l'objet.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 class ABs : private vector<A*>, private vector<B*> { public: void add(const A& a) {vector<A*>::push_back(a.clone());} void add(const B& b) {vector<B*>::push_back(b.clone());} };
Voilà voilà, je pense que vous cernez le problème. J'aimerais faire que quand j'ajoute un AB dans ma liste de A et de B, il ne s'ajoute qu'un seul et unique AB. De plus, je crois bien que le code ne compile pas ici. Arrivez-vous à le faire compiler? Si certaines parties sont encore floues merci de m'en informer.
Merci beaucoup de votre aide !
Partager