Type generique

bchargui Messages postés 2 Date d'inscription mercredi 14 mai 2003 Statut Membre Dernière intervention 14 mai 2003 - 14 mai 2003 à 15:29
cs_vieuxLion Messages postés 455 Date d'inscription samedi 26 octobre 2002 Statut Membre Dernière intervention 6 avril 2004 - 14 mai 2003 à 22:01
Salut,
je veux declarer un type generique(monType) qui pourra etre instancier de manieres differentes(c-a-d :
monType=new Class1;
ou
monType=new Class2;
ou....)
comment faire?
merci d'avance
bchargui

5 réponses

cs_Kaid Messages postés 949 Date d'inscription mardi 2 octobre 2001 Statut Membre Dernière intervention 8 juillet 2006 1
14 mai 2003 à 15:32
Il faut que tu crées une super classe pour représenter ton type. Class1, Class2, ..., seront des classes filles ce cette super classe.

Kaid - kaid.fr.st
0
highcobra Messages postés 122 Date d'inscription lundi 31 mars 2003 Statut Membre Dernière intervention 20 avril 2005
14 mai 2003 à 15:34
Faut que Class1 et Class2 soient dérivées de "Montype" et que les méthodes de "Montype" soient virtuelles pour qu'il y ait mise en oeuvre de la liaison dynamique lors de l'appel...

High_Cobra ;)
0
bchargui Messages postés 2 Date d'inscription mercredi 14 mai 2003 Statut Membre Dernière intervention 14 mai 2003
14 mai 2003 à 16:23
et je peux utiliser les methodes des classes filles sans probleme?
(EX: monType.methodeclassfille();)
0
cs_Kaid Messages postés 949 Date d'inscription mardi 2 octobre 2001 Statut Membre Dernière intervention 8 juillet 2006 1
14 mai 2003 à 16:29
Seulement si les méthodes sont définies dans la classe mère (virtuelles ou non).
Pourquoi tu veux faire ca au fait ?

Kaid - kaid.fr.st
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_vieuxLion Messages postés 455 Date d'inscription samedi 26 octobre 2002 Statut Membre Dernière intervention 6 avril 2004 8
14 mai 2003 à 22:01
bonjour,

ce que Kaid veut dire est :

#include
using namespace std;

class IClass
{
public:
virtual void f()=0;//virtuel pur
};
class Class1 : public IClass
{
public:
void f(){ cout << "Class1::f" << endl;}
};
class Class2 : public IClass
{
public:
void f(){ cout << "Class2::f" << endl;}
};

int main()
{
IClass *c1 = new Class1;
IClass *c2 = new Class2;
c1->f();
c2->f();
return 0;
}
0
Rejoignez-nous