Fonction de reconnaissance de classe

Résolu
adeline11 Messages postés 54 Date d'inscription   Statut Membre Dernière intervention   -  
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   -
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 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
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