IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SL & STL C++ Discussion :

Fonction polymorphe et conteneur stl.


Sujet :

SL & STL C++

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2002
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2002
    Messages : 3
    Points : 4
    Points
    4
    Par défaut 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 : 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;
    }
    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 ?!

  2. #2
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 275
    Points : 10 985
    Points
    10 985
    Par défaut
    La seule façon qu'il y ait pour qu'une collection puisse contenir des éléments de façon polymorphique, c'est de stocker des pointeurs vers ceux-ci.
    (ou utiliser l'idiome enveloppe-lettre pour avoir une sémantique de valeur sur une hiérarchie polymorphique)
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2002
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2002
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    Merci beaucoup !

Discussions similaires

  1. STL set et fonction membre du conteneur
    Par bobyjoe dans le forum SL & STL
    Réponses: 4
    Dernier message: 29/06/2007, 13h23
  2. Réponses: 3
    Dernier message: 24/06/2006, 15h05
  3. Réponses: 2
    Dernier message: 24/05/2006, 15h45
  4. Fonction "polymorphe" ??
    Par rvzip64 dans le forum Langage
    Réponses: 7
    Dernier message: 03/03/2006, 15h36
  5. type conteneur stl
    Par star_light dans le forum SL & STL
    Réponses: 5
    Dernier message: 15/02/2005, 23h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo