Bonjour,
j'aimerais avoir un conseil sur la meilleure (plus élégante) façon de programmer une intéraction entre 2 objets
J'ai un objet A avec une méthode X et un objet B qui aura besoin, dans une méthode à lui (appelons-là "Y" ), d'appeler la méthode A::X pour un des objets A
Code :
- class A {
- public:
- ...
- ...
- void X(void);
- };
- void A::X(void)
- {
- ...
- }
- class B {
- public:
- ...
- ...
- };
|
Là, je me heurte à un dilemne. Pour que B puisse appeler A::X(), il faut que B connaisse l'objet A (évident). Donc j'ai plusieurs choix :
- quand j'appelle la méthode "Y" de B, je lui passe en paramètre l'adresse du A que je veux traiter. Cela me donne :
Code :
- class B {
- public:
- void Y(A *pt);
- ...
- };
- void B::Y(A *pt)
- {
- pt->X();
- }
|
Ca fonctionne correct... mais si j'ai maintenant 50 méthodes de B qui ont besoin d'appeler X(), je dois passer à chaque méthode un pointeur vers A. Je suis pas emballé outre mesure.
- quand je construits B, je passe à son constructeur un pointeur sur l'objet A. B stocke ce pointeur dans un de ses membres. Mais ensuite, toutes ses méthodes peuvent utiliser ce pointeur pour appeler X() et ça donne :
Code :
- class B {
- public:
- B(A *pt);
- void Y(void);
- ...
- private:
- A *pt;
- };
- B::B(A *pt)
- {
- this->pt=pt;
- ...;
- }
- void B::Y(void)
- {
- pt->X();
- }
|
Zavez des conseils ou des idées sur la meilleure ou la plus élégante des solutions ? (ou une 3° que je ne connessoirais pas encore ?)
En vous remerciant.
Message édité par Sve@r le 13-03-2006 à 19:34:24