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 -
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++
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:
- Outlook une fonction de reconnaissance interne a reporté une erreur
- Fonction si et - Guide
- Reconnaissance musique en ligne sans télécharger - Guide
- Supprimer une adresse mail outlook - Guide
- Stockage interne autre ✓ - Forum Samsung
- Logiciel de reconnaissance de texte - Télécharger - Divers Bureautique
1 réponse
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 :
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.
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.