Instanciation de sous-classe

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 - 25 août 2005 à 15:58
xterminhate Messages postés 371 Date d'inscription dimanche 4 janvier 2004 Statut Membre Dernière intervention 23 septembre 2009 - 26 août 2005 à 18:56
Bonjour

J'ai la hiérarchie de classes suivante: A0, A1, A2, A3, A4... sont des sous-classes de A.
J'ai besoin d'instancier une de ces sous-classes selon la valeur d'une variable n. Pour le moment j'ai un code qui ressemble à ca:

A* p;
switch(n)
{
case 0:
p = new A1();
break;
case 1:
p = new A1();
break;
...
}

J'aimerais une solution plus jolie que ca, d'autant qu'il y a en réalité environ 15 sous classes.
J'ai pensé à un tableau de A* contenant un spécimen de chaque sous-classe, et utiliser une méthode virtual A* A::make(...)=0 pour créer un objet (les constructeurs actuels des sous-classes prennent les mêmes paramètres).
Cette solution vous semble-t-elle plus efficace, ou en avez vous une autre?

23 réponses

steve_clamage Messages postés 475 Date d'inscription dimanche 3 octobre 2004 Statut Membre Dernière intervention 11 août 2006 5
26 août 2005 à 16:37
Ouai c'est la meme chose si c'est fait avec un vector, par contre
l'avantage avec la map c'est la modularité (et [] permet l'insertion).
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
26 août 2005 à 16:43
Je comprends, mais dans mon cas j'ai 15 classes et ca ne change pas pendant l'exécution

xterminhate>Je viens de comprendre "TC++PL ed.3" :)

J'ai commencé mais j'ai pes eu le courage de lire la fin, qui traite de
la conception et de principes de programmation. C'est sans doute dans
cette partie que l'exemple est traité. J'ai la version 4 (). Si tu as la page...
0
xterminhate Messages postés 371 Date d'inscription dimanche 4 janvier 2004 Statut Membre Dernière intervention 23 septembre 2009
26 août 2005 à 18:56
PTDR. C'est à la fin bien sur.

Section 25 : "Rôle des classes". Dans l'édition 3 : "25.4.1 Le changement des interfaces" page 866..868 (il fallait lire jusque là et retenir... ;-)
0
Rejoignez-nous