Fonction de reconnaissance de classe

Résolu
adeline11 Messages postés 58 Statut Membre -  
Char Snipeur Messages postés 10112 Statut Contributeur -
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 10112 Statut Contributeur 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