Héritage : cast ou non ?
Fermé
Elipso
-
Modifié par Elipso le 12/04/2013 à 15:38
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 19 avril 2013 à 12:21
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 19 avril 2013 à 12:21
A voir également:
- Héritage : cast ou non ?
- Texte de don d'héritage ✓ - Forum Vos droits sur internet
- Valise maison heritage avis ✓ - Forum Consommation & Internet
- Maison héritage canapé avis - Forum Vos droits sur internet
- Cheick yvan formate héritage - Forum Vos droits sur internet
- Arnaque canapé ✓ - Forum Vos droits sur internet
2 réponses
mamiemando
Messages postés
33443
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
19 décembre 2024
7 811
Modifié par mamiemando le 19/04/2013 à 01:34
Modifié par mamiemando le 19/04/2013 à 01:34
Je vois au moins deux manières de faire mieux.
1) Si la seule différence de ControlerB et ControlerC c'est d'embarquer un type de Model différent, on peut imaginer simplement avoir une seule classe Controler qui stocke un A* et se reposer sur le lien dynamique pour invoquer de manière appropriée les méthodes implémentées dans A, B ou C. Il faut juste que les méthodes de A soient virtual.
https://forums.commentcamarche.net/forum/affich-27621184-fonctions-virtuelles-en-c#p27622390
2) Une autre manière de faire consiste à ce que Controler soit une classe template qui prend en paramètre un model :
Bonne chance
1) Si la seule différence de ControlerB et ControlerC c'est d'embarquer un type de Model différent, on peut imaginer simplement avoir une seule classe Controler qui stocke un A* et se reposer sur le lien dynamique pour invoquer de manière appropriée les méthodes implémentées dans A, B ou C. Il faut juste que les méthodes de A soient virtual.
https://forums.commentcamarche.net/forum/affich-27621184-fonctions-virtuelles-en-c#p27622390
2) Une autre manière de faire consiste à ce que Controler soit une classe template qui prend en paramètre un model :
template <typename Tmodel> class Controler { protected: Tmodel * model; ... }; int main() { Controler<B> cb; ... return 0; }
Bonne chance
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
19 avril 2013 à 12:21
19 avril 2013 à 12:21
salut.
+1 pour les virtuels.
+1 pour les virtuels.