Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2172 connectés 

  FORUM HardWare.fr
  Programmation
  C++

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°1950854
jayvo
Posté le 16-12-2009 à 12:04:41  profilanswer
 

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?  :??:

mood
Publicité
Posté le 16-12-2009 à 12:04:41  profilanswer
 

n°1950856
theshockwa​ve
I work at a firm named Koslow
Posté le 16-12-2009 à 12:20:11  profilanswer
 

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
n°1950863
Joel F
Real men use unique_ptr
Posté le 16-12-2009 à 12:39:45  profilanswer
 

CINtegration devrait abstraite avec parametres qui es une methode virtuelle pure

n°1950865
jayvo
Posté le 16-12-2009 à 12:50:26  profilanswer
 

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
n°1950867
Joel F
Real men use unique_ptr
Posté le 16-12-2009 à 12:57:08  profilanswer
 

ta modélisation doit etre bancale alors

n°1950872
jayvo
Posté le 16-12-2009 à 13:04:14  profilanswer
 

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


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

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

 

Sujets relatifs
POO : définir la bonne classe suivant des variablesAccès multiples à un fichier en C++ sous window
Une instance de classe métier pour plusieurs formsPb acces base de donnée
(DEBUTANT) Probleme de classe en c++Monitorer les accès en base de données MySQL
[C++] classe array 1d et delete[][C++] Map statique dans une classe
[Architecture] Utiliser une classe en dev / test et une autre en prod 
Plus de sujets relatifs à : Instanciation de classe et accès aux méthodes des classe filles


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR