Bonjour,
Si j'ai par exemple le code suivant :
Et que je crée un vecteur de la manière suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 class A{...} class B : public A{...}
Lorsque je crée un objet de type B :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 std::vector<A*> vect;
Que je l'introduis dans le vecteur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 B* b = new B(...);
Et que je teste son type :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 vect.puch_back(b);
La console m'affiche :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 printf("type : %s\n", typeid(vect[emplacement_de_b]).name())
Pourquoi ? Pourquoi pas class B ? Et donc, comment faire pour détecter la présence d'une instance de la sous-classe B dans un vecteur de A ? Et comment forcer alors l'appel d'une méthode de B, qui surdéfinit une méthode de A ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2type : class A
Merci d'avance![]()
Partager