Fonction de reconnaissance de classe

Résolu/Fermé
adeline11 Messages postés 54 Date d'inscription dimanche 28 septembre 2008 Statut Membre Dernière intervention 18 février 2010 - 17 mars 2009 à 18:56
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 18 mars 2009 à 08:56
Bonjour,
Voila, j'ai une classe mère A et ses deux classes filles B et C. Si j'écrit quelque chose comme :
A a[2];
B b;
C c;

a[0]=b;
a[1]=c;

J'aimerais savoir s'il existe une fonction qui permet de savoir si a[0] appartient à la classe B ou à la classe C.
Je sais bien que dans mon exemple on le sais mais dans mon code j'ai un tableau beaucoup plus grand et il est donc impossible de savoir. Merci par avance
PS : Je débute et je fais du C++
A voir également:

1 réponse

Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
18 mars 2009 à 08:56
Salut.
Il faut utiliser les surcharge de méthodes virtuelles.
class A{
virtual string nom(){return "class A";};
...}
class B:public A{
virtual string nom(){return "class B";};
...}
class C:public A{
virtual string nom(){return "class C";};
...}
Par contre, pour l'utiliser, tu ne peux pas faire comme tu l'as dit, c'est plutôt :
A* a[2];
B b;
C c;

a[0]=&b;
a[1]=&c; 

En effet, les classes B et C n'ont pas forcément la même taille que la classe A, elle ne pourrait alors pas rentrer dans les cases du tableaux (dont chaque case a une taille bien définie).
Ensuite, en faisant a[i]->nom() tu saura quelle type de classe est la ième case du tableau.
0