Fonction polymorphe et conteneur stl.
Bonjour,
voila mon problème: j'aimerai créer une liste d'affichage qui contient des objets differents. Pour ce faire je dois donc les faire heriter d'une même classe mère qui possède une fonction polymorphe.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
|
#include <list>
class A
{
public:
virtual void affiche() { std::cout << "A"; };
};
class B : public A
{
public:
virtual void affiche() { std::cout << "B"; }
};
int main()
{
std::list<A> liste;
B b;
liste.push_back(b);
std::list<A>::iterator i=liste.begin();
while(i!=liste.end())
{
i->affiche();
i++;
}
return 0;
} |
Sauf que, au lieu de m'afficher "B", il m'affiche "A". Le compilateur ne comprend pas qui doit appeller la fonction de l'objet B.
Est-ce une erreure de code ou un bug de mon compilateur (VC++6) ?
Certes, je pourrai utiliser un tableau, là, ça marche, mais la stl me ferai gagner bcp de temps.
Avez vous des solutions differentes ?!