Instanciation de classe et accès aux méthodes des classe filles

Instanciation de classe et accès aux méthodes des classe filles - C++ - Programmation

Marsh Posté le 16-12-2009 à 12:04:41    

Salut à tous,
J'ai le souci suivant:
 
J'ai la structure de classe suivante:
 
-CIntegration
----CCircuitA
----CCircuitB
----COrdre2
--------CCircuitC
--------CCircuitC
 
Et CCircuitB possède la méthode "Parametres"
 
J'instancie mes classes ainsi:
 

Code :
  1. CIntegration *Circuit;
  2. switch ( ChoixCircuit)
  3. {
  4. case 1 :
  5.  Circuit = new CCircuitA;
  6. break;
  7. case 2 :
  8.  Circuit = new CCircuitB;
  9.  Circuit->Parametres();
  10. break;
  11. case 3 :
  12.  Circuit = new CCircuitC;
  13. break;
  14. case 4 :
  15.  Circuit = new CCircuitD;
  16. break;
  17. default : cout << "error" << endl;
  18. }


 
Le problème c'est que lors de la compilation, VS2005 me dit que la méthode paramètre n'appartient pas à CIntegration
(normal vu que elle appartient à une de ses classes filles)
 
Du coup je suis obligé de définir Parametres en virtuel dans la classe CIntegration et de l'overrider dans chacune des classes CCircuitA, C et D.  
Le problème c'est que pour CCircuitA, CCircuitC, CCircuitD , la fonction  ne sert à rien et est vide.  :sweat:  
 
En gros, j'ai:

Code :
  1. void CCircuitA::Parametres()
  2. {
  3. }
  4. ...
  5. void CCircuitC::Parametres()
  6. {
  7. }
  8. ...
  9. void CCircuitD::Parametres()
  10. {
  11. }


 
Y'a un moyen d'éviter ça?  :??:

Reply

Marsh Posté le 16-12-2009 à 12:04:41   

Reply

Marsh Posté le 16-12-2009 à 12:20:11    

c'est l'implémentation de ta factory qui n'est pas terrible ...
 
Un quick fix :
 

Code :
  1. switch ( ChoixCircuit)
  2. {
  3. case 1 :
  4.  Circuit = new CCircuitA;
  5. break;
  6. case 2 : {
  7.  CCircuitB* CircuitB = new CCircuitB;
  8.  CCircuitB->Parametres();
  9.  Circuit = CircuitB;
  10.  }
  11. break;
  12. default : cout << "error" << endl;
  13. }



---------------
last.fm
Reply

Marsh Posté le 16-12-2009 à 12:39:45    

CINtegration devrait abstraite avec parametres qui es une methode virtuelle pure

Reply

Marsh Posté le 16-12-2009 à 12:50:26    

C'est bien ça mais après il faut donc que je mettre ma méthode partout dans les classes filles même là où elle ne sert pas  :sweat:


Message édité par jayvo le 16-12-2009 à 12:52:08
Reply

Marsh Posté le 16-12-2009 à 12:57:08    

ta modélisation doit etre bancale alors

Reply

Marsh Posté le 16-12-2009 à 13:04:14    

Bon ça marche. La méthode de theshockwave était la bonne.
Merci à vous deux :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed