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 :

Acceder a la fonction membre d'une classe, dans une std::map


Sujet :

C++

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    284
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 284
    Points : 149
    Points
    149
    Par défaut Acceder a la fonction membre d'une classe, dans une std::map
    Bonsoir,

    Je cree une map de std::string liees a des pointeurs sur class (admettons AExemple, une classe abstraite).

    J'aimerais acceder a une fonction membre de l'une de ces classes, dans ce cas pratique, ajouter une class Test a ma map en envoyant a son constructeur la valeur de retour d'un getter de Toto, mais j'ai le message d'erreur suivant: test.cpp:4: error: ‘class AExemple’ has no member named ‘getNb’, un peu comme si il ne dereferencait pas le pointeur sur classe AExemple, c'est la premiere fois que je tente d'utiliser ce conteneur, apparemment quelque chose m'echappe !

    Voici le code:

    Test.hpp
    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
    #include <map>
     
    class AExemple
    {
    private:
         std::map<std::string, AExemple*> map_;
    public:
         AExemple();
    };
     
    class Test : public AExemple
    {
    private:
         int nb;     
    public:
         Test(int nb);
         int getNb();
    };
     
    class Toto : public AExemple
    {
    private:
         int getNb();
         int nb;     
    public:
         Toto();
         int getNb();
    }
    Test.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #include "Test.hpp"
     
    AExemple::AExemple()
    {
      this->map_["UN"] = new Toto(); 
      this->map_["DEUX"] = new Test(this->map_["UN"]->getNb();
    }
    Merci pour votre aide !

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Il faut déclarer la méthode getNb virtuelle (éventuellement pure) dans AExemple.
    Cela permettra l'invocation de la méthode mais c'est bien la méthode de Test ou Toto suivant le cas qui sera invoquée.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    284
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 284
    Points : 149
    Points
    149
    Par défaut
    Evidemment... Erreur d'innatention

    Merci de m'avoir eviter une plus longue perte de temps !

    Bonne soiree !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 14/04/2015, 16h44
  2. Eval d'une propriété d'une classe dans une classe
    Par bizet dans le forum ASP.NET
    Réponses: 4
    Dernier message: 28/10/2008, 10h43
  3. [POO] Une Classe dans une Classe. C'est possible?
    Par FrankOVD dans le forum Langage
    Réponses: 2
    Dernier message: 18/05/2006, 23h02
  4. [POO] Utilisation d'une classe dans une classe !
    Par Okinou dans le forum Langage
    Réponses: 3
    Dernier message: 16/02/2006, 15h34
  5. Une classe dans une classe...
    Par Baquardie dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 30/09/2005, 20h36

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