[Résolu]Instanciation d'une classe differente selon les arguments

Instanciation d'une classe differente selon les arguments [Résolu] - C++ - Programmation

Marsh Posté le 21-04-2006 à 19:46:45    

Bonjour tout le monde,
 
Alors j'ai cherche de l'aide mais j'ai pas trouve donc je suis desole si c'est un probleme basique pour vous :sweat: .
 
Voila je voudrais créer une instanciation de classe différente selon les arguments passés au shell.
En gros si je tape sous windows "mon_prog.exe sumo" je voudrais que ca crée un objet issu de la classe sumo.
 

Code :
  1. string first_command(argv[1]);
  2. if (first_command == "sumo" )
  3. Sumo first_fighter = createSumo();
  4. else if (first_command == "boxe" )
  5. EnglishBoxer first_fighter = createEnglishBoxer();
  6. else if (first_command == "savate" )
  7. FrenchBoxer first_fighter = createFrenchBoxer();


 
Le but étant d'avoir un seul algorythme simple ensuite en utilisant les méthodes des classes (les méthodes étant différentes selon les classes).
 
Le probleme c'est que vu que je declare mes instances dans le "if" je les perds en en sortant.
Alors a part en declarant en global ou un truc dans le style je vois pas quoi faire d'autre pour contourner le probleme.
 
Si quelqu'un a une idée merci :)


Message édité par Nash49 le 21-04-2006 à 20:40:24
Reply

Marsh Posté le 21-04-2006 à 19:46:45   

Reply

Marsh Posté le 21-04-2006 à 20:03:53    

tu fais dériver tes trois classe de la même mère. Ton first_fighter est un pointeur vers un objet mère et tu le fais pointer vers des objets instanciés selon ce que te donne l'utilisateur.
 

Code :
  1. class Fighter { /*...*/ };
  2. class Sumo : public Fighter { /*...*/};
  3. class EnglishBoxer : public Fighter { /*...*/};
  4. int main( int argc, char **argv )
  5. {
  6.   Fighter *first_fighter;
  7.   string first_command(argv[1]);
  8.   if (first_command == "sumo" )
  9.     first_fighter = new Sumo;
  10.   /* ... */
  11. }


 
tu devrais te renseigner sur les notions d'héritage et de polymorphisme.


Message édité par franceso le 21-04-2006 à 20:05:09

---------------
TriScale innov
Reply

Marsh Posté le 21-04-2006 à 20:15:27    

ho bah j'avais meme pas penser a faire ca.
 
ca a l'air de fonctionner merci :)
 
je pensais que les classes ayant des methodes differentes et des variables differentes ca marcherait pas.
parce qu'elles heritaient toutes deja d'une autre.
 
bon bah cool :)


Message édité par Nash49 le 21-04-2006 à 20:15:49
Reply

Sujets relatifs:

Leave a Replay

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