Bonjour à toutes et à tous,
Je parcourais Stack ce matin, et je suis tombé sur ce sujet de polymorphisme:
https://stackoverflow.com/questions/...use-it-outside
En particulier sur ce bout de code:
posté en réponse. On voit ici que l'initialisation de la classe dépend d'une variable 'b00lvar'. Je me posais la question d'un cas plus large, ou nous aurions une classe de base et beaucoup de classes filles, suivant le même schéma, par exemple:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Alma* Andor; if(b00lvar){ Andor = new Birs(); std::cout<<Andor->Getwidth()<<" "<<Andor->Getheight()<<std::endl; }else{ Andor = new Citrom(); std::cout<<Andor->Getwidth()<<" "<<Andor->Getdepth()<<std::endl; }
Est-il possible de généraliser ces multiples initialisations sous une forme plus élégante plutôt que d'avoir une liste de if/else en fonction d'un paramètre 'une variable' sans pour autant altérer la performance (en termes de temps de calcul) de l'ensemble ? Je ne vois pas de solution magique, mais j’admets que ma connaissance du langage est plutôt limité.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Alma* Andor; switch( une_variable ) { case 0 : { Andor = new Birs(param1, param2); } case 1 : { Andor = new Citrom(param1, param2, param3); } case 2 : { Andor = new Blabla(param1,param4,param5); } etc. }
Merci!
Partager