Résultats de 1 à 7 sur 7

Sujet : [STL] map clé string objets

  1. #1

    [STL] map clé string objets

    Alors voila le probleme,
    j\'ai codé un map qui prend comme clé une string & qui a pour objet associé des pointeurs vers des objets Blocs (Bloc*), definis par moi même.
    Lorsque que je veux recuperer le pointeur associé à une certaine clé(string), je recupère donc un itérateur auquel je récupère son attribut \'.second\'. Ce qui devrait me rendre l\'objet associé à la clé, enfin le pointeur. Bref ca compile, mais à l\'excution, j\'ai un message d\'erreur du type \'Unable to read memory address 0cddddddxd\', enfin voila ...
    Si qqun a deja eu le même type de problème, aidez moi !!! (et je vous ferais une cheque de 100 000 $)

  2. #2
    Membre MP
    Inscrit
    août 2013
    Messages
    329
    Voyons voir... Théoriquement, à lire ton explication comme ça, je ne vois pas où se situe l\'erreur. Tu as essayé de debugger avec des bp ? Tu peux montrer un peu de code ?

  3. #3
    bon alors pour le code, y\'a un détail étrange que j\'avais pas signalé, en fait on peut pas accéder à une des maps de la classe (un attribut), on est obligé de passer par une méthode d\'accés et ça, on capte vraiment pas pkoi ...
    ex code:

    // *.h

    //Declarations
    typedef map<string, BlocINDI*> _hashINDI;
    typedef _hashINDI::iterator MapIndiIt;

    private:
    /**
    *@brief Attribut de stockage des BlocINDI
    */
    _hashINDI _individus;

    public:

    BlocINDI* getINDI(string cle) const;

    // *.cpp

    BlocINDI* FormatCentral::getINDI (string cle) const {
    MapIndiIt i;

    // Capture de l\'iterateur correspondant a la clé
    // detail étrange, ne marche pas dircetement avec l\'attribut _inidvidus ...
    // get_HashIndi() renvoie celui ci ...

    i = get_HashIndi().find(cle);
    if (i == get_HashIndi().end()) {

    cout << \"Cle inexistante\" << endl;
    return NULL;

    }else{

    cout << \"Cle Valide, Retour du pointeur sur le BlocINDI correspondant\" << endl;
    // C\'est ici que ca merde, que ce soit second ou first
    cout << (*i).first << endl;
    cout << ((*i).second)->affiche() << endl;
    return (*i).second;
    }
    }

  4. #4
    Membre MP
    Inscrit
    août 2013
    Messages
    329
    Code:
    cout << (*i).first << endl;
    cout << ((*i).second)->affiche() << endl;

    Etant donné que i semble être un objet statique, quelle est l\'utilité de l\'étoile ? D\'un autre côté je n\'ai pas encore essayé le type d\'objets de la stl que tu présentes ici donc je ne suis pas sûr de tomber juste. A mon sens,

    Code:
    cout << i.first << endl;
    cout << i.second->affiche() << endl;
    Serait plus juste (si i.second est bien un pointeur bien sûr ^^) Je vais essayer de me renseigner pour voir si je peux t\'en dire plus.

  5. #5
    avait deja essayé 7 possibilté, je pense que l\'itérateur renvoyé n\'est qu\'un pointeur ... d\'ou l\'utilisation de l\'etoile ...

  6. #6
    Membre MP
    Inscrit
    août 2013
    Messages
    329
    Dans ce cas là, pourquoi déclarer i en static avec ce type ? Le type est un typedef sur un type dyn ?

  7. #7
    he ben ct le const de la déclaration de la fonction ...

Informations du sujet

Utilisateur(s) parcourant ce sujet

il y a actuellement 1 utilisateur(s) parcourant ce sujet. (0 membre(s) et 1 visiteur(s))

Règles des messages

  • Vous ne pouvez pas créer de sujets
  • Vous ne pouvez pas répondre aux sujets
  • Vous ne pouvez pas importer de fichiers joints
  • Vous ne pouvez pas éditer vos messages
  •  
  • Les BB codes sont Activés
  • Les Smileys sont Activés
  • Le BB code [IMG] est Activé
  • Le code [VIDEO] est Activé
  • Le code HTML est Désactivé