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

C++ Discussion :

Containers pointeurs et h�ritage


Sujet :

C++

  1. #1
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    6
    D�tails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 6
    Par d�faut Containers pointeurs et h�ritage
    Bonjour,

    C'est peut-�tre un probl�me qui semblera basique � certains d'entre vous, mais je n'arrive pas � m'en sortir. Voila dans le cadre d'un projet �cole de gestion de m�diath�que, j'ai d�fini en C++ les classes suivantes:
    - Ressource (classe parent)
    - CD (h�rite de Ressource)
    - Livre (h�rite de Ressource)
    - DVD (h�rite de Ressource).
    Ressource est donc une classe abstraite.

    Je souhaiterais maintenant stocker toutes les ressources dans un container. Donc, apr�s avoir regard� les containers de la STL, j'ai choisi le container map, en associant le titre de la ressource � un pointeur vers la ressource:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
     
    typedef map<string, Ressource *> Ressources;
    Ressources container;
    J'ai ensuite ajout� deux ressources � mon conteneur de la mani�re suivante:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
     
    //Initialisation de la ressource cd1 et de dvd1
    container[cd1.getTitre()] = new CD(cd1);
    container[dvd1.getTitre()] = new DVD(dvd1);
    Maintenant je souhaiterais "ressortir" une ressource du conteneur en faisant par exemple:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
     
    CD temp;
    temp = *(iterateur->second);
    Malheureusement ce code ne marche pas car le conteneur contient des pointeurs vers des ressources et non pas des pointeurs vers des cds. Meme probl�me si j'essaye d'appeler une m�thode de la ressource:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
     
    string titre;
    titre = *(iterateur->second)->getTitre();
    Si quelqu'un peut m'aider sur ce probl�me...

    Merci d'avance.

  2. #2
    R�dacteur

    Avatar de Matthieu Brucher
    Profil pro
    D�veloppeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    D�tails du profil
    Informations personnelles :
    �ge : 43
    Localisation : France, Pyr�n�es Atlantiques (Aquitaine)

    Informations professionnelles :
    Activit� : D�veloppeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par d�faut
    Avec un dynamic_cast.
    Mais pourquoi vouloir faire �a ? On peut tout � fait s'en passer, c'est m�me mieux d'un point de vue design.

  3. #3
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    6
    D�tails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 6
    Par d�faut
    Bonjour,

    J'aimerais beaucoup moi aussi me passer d'utiliser un container de pointeurs, mais je ne vois pas comment faire �tant donn� que Ressource est une classe abstraite, car lorsque je fais:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    typedef map<string, Ressource *> Ressources;
    �a plante...

    Miles> si tu connais un moyen de se passer d'un conteneur de pointeurs en faisant un conteneur de ressources directement, je suis preneur.

    Merci

Discussions similaires

  1. R�ponses: 10
    Dernier message: 23/03/2015, 09h23
  2. R�ponses: 21
    Dernier message: 26/07/2011, 12h08
  3. Pointeur sur m�thode + h�ritage
    Par Bleastou dans le forum C++
    R�ponses: 20
    Dernier message: 22/09/2008, 14h54
  4. [POO] Pointeur sur fonction membre et h�ritage
    Par MrDuChnok dans le forum C++
    R�ponses: 9
    Dernier message: 20/07/2006, 17h19
  5. Pointeur et h�ritage...
    Par Zenol dans le forum C++
    R�ponses: 2
    Dernier message: 08/03/2006, 12h31

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