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 :

Problème d'utilisation d'une map


Sujet :

SL & STL C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Avatar de Mindiell
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    735
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 735
    Par défaut Problème d'utilisation d'une map
    Salut à tous,

    je tente vainement d'utiliser une map ainsi :
    Code le .hpp : Sélectionner tout - Visualiser dans une fenêtre à part
    std::map<std::string,cStatus> m_status;

    Code le .cpp : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    int cElement::AddStatus (std::string name, int nbframes, int visible, int animated, int looping, float x, float y)
    {
        cStatus s(name, nbframes, visible, animated, looping, x, y);
        m_status["test"] = s;
        return m_status.size();
    }

    Et là, il me sort ca à la fin de la compil :
    F:\Projets\mi\element.cpp:: In member function `int cElement::AddStatus(std::string, int, int, int, int, float, float)':
    F:\Projets\mi\element.cpp:28: error: no match for 'operator[]' in '((cElement*)this)->cElement::m_status["test"]'
    C:\Dev-Cpp\bin\..\lib\gcc\mingw32\3.4.2\..\..\..\..\include\c++\3.4.2\bits\stl_map.h:332: note: candidates are: _Tp& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const _Key&) [with _Key = std::string, _Tp = cStatus, _Compare = std::less<std::string>, _Alloc = std::allocator<std::pair<const std::string, cStatus> >] <near match>
    :: === Build finished: 2 errors, 0 warnings ===
    Quelqu'un peut-il m'aider ?

  2. #2
    Membre éclairé
    Avatar de Floréal
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    456
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 456
    Par défaut
    Je soupçonne une déclaration foreward sans inclusion du fichier "map" de std::map.
    Mais si ce n'est pas ça, c'est difficile a dire, peux tu envoyer la totalité du code (le .h et le .cpp), s'il te plait?

  3. #3
    Membre éclairé
    Avatar de Mindiell
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    735
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 735
    Par défaut
    Eh bien, c'est quasiment la totalité du code...

    ma classe cElement contient la map (private).
    le main crée une instance de cette classe mais n'utilise pas la fonction AddStatus (pas encore, j'étais en train de la coder justement).

    voici le constructeur de la classe cStatus si ca peut aider :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    cStatus::cStatus (std::string name, int nbframes, int visible, int animated, int looping, float x, float y) :
        m_name(name),
        m_nbframes(nbframes),
        m_visible(visible),
        m_animated(animated),
        m_looping(looping),
        m_x(x),
        m_y(y)
    {
        m_nextframeupdate = 0;
        m_actualframe = 0;
    }
    Rien que de très normal quoi... je pense...

  4. #4
    Membre éclairé
    Avatar de Mindiell
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    735
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 735
    Par défaut
    Mongaulois> Je viens d'essayer, mais même message. Normalement je voudrais ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    int cElement::AddStatus (std::string name, int nbframes, int visible, int animated, int looping, float x, float y)
    {
        cStatus s(name, nbframes, visible, animated, looping, x, y);
        m_status[name] = s;
        return m_status.size();
    }
    histoire de retrouver mon statut facilement par la suite. mais j'ai strictement la même erreur. J'avais remplacé name par "test" juste pour voir... Désolé du mauvais copier-coller

  5. #5
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Bizarre. Par contre tu devrait rajouter l'implémentation de "operator =" pour cStatus.

  6. #6
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    juste une question bête.
    tu as bien
    #include <string>

  7. #7
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    et en remplacant cela ?
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     m_status[std::string("test")] = s;
    car dans l'erreur
    C:\Dev-Cpp\bin\..\lib\gcc\mingw32\3.4.2\..\..\..\..\include\c++\3.4.2\bits\stl_map.h:332: note: candidates are: _Tp& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const _Key&) [with _Key = std::string, _Tp = cStatus, _Compare = std::less<std::string>, _Alloc = std::allocator<std::pair<const std::string, cStatus> >]

    Je pense qu'il n'arrive pas a remplacer "test" en const _Key& , vu que Key est une std::string et non un tableau de char

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

Discussions similaires

  1. Problème d'utilisation d'une dll
    Par Zocco dans le forum C++Builder
    Réponses: 1
    Dernier message: 08/11/2007, 17h42
  2. problème avec insert dans une map
    Par LePetitBricoleur dans le forum C++
    Réponses: 3
    Dernier message: 01/11/2007, 11h52
  3. Problème d'utilisation d'une application
    Par ROYER dans le forum Bases de données
    Réponses: 6
    Dernier message: 06/09/2007, 12h07
  4. Problème de récupération dans une map
    Par sacdenoeud dans le forum C++
    Réponses: 7
    Dernier message: 26/03/2006, 08h40
  5. Réponses: 5
    Dernier message: 26/05/2005, 15h40

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