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.
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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; }
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 ?!
Partager