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++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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