Héritage : cast ou non ?
Fermé
Elipso
-
Modifié par Elipso le 12/04/2013 à 15:38
Char Snipeur Messages postés 9696 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 9696 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 ?
- Maison héritage canapé avis - Forum Consommation & Internet
- Maison héritage avis - Forum Vos droits sur internet
- Cheick yvan formate héritage - Forum Vos droits sur internet
- Que du fake formate heritage ✓ - Forum Vos droits sur internet
- Menace et chantage sexué - Forum Vos droits sur internet
2 réponses
mamiemando
Messages postés
33093
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
4 mai 2024
7 752
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
9696
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 297
19 avril 2013 à 12:21
19 avril 2013 à 12:21
salut.
+1 pour les virtuels.
+1 pour les virtuels.