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 :

erreur map insert


Sujet :

SL & STL C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Software engineer
    Inscrit en
    Août 2008
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Software engineer

    Informations forums :
    Inscription : Août 2008
    Messages : 139
    Par défaut erreur map insert
    salut

    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
     
    #include "condition.h"
    #include "Action.h"
     
    using namespace std;
     
    class Regles{
     
        private:
        map <Condition,Action> m_Regle;
     
     
        public:
    		Regles();
    		~Regles();
    		void construireUneRegles(Condition,Action);
    		void test();
    };
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    void Regles::construireUneRegles(Condition cond,Action act){
        m_Regle.insert(make_pair(cond,act));
    }
    un seul erreur lors de la compilation de tout le projet ,est le suivant :

    ||=== editeur, Release ===|
    C:\Program Files\CodeBlocks\MinGW\bin\..\lib\gcc\mingw32\3.4.5\..\..\..\..\include\c++\3.4.5\bits\stl_function.h||In member function `bool std::less<_Tp>::operator()(const _Tp&, const _Tp&) const [with _Tp = Condition]'
    C:\Program Files\CodeBlocks\MinGW\bin\..\lib\gcc\mingw32\3.4.5\..\..\..\..\include\c++\3.4.5\bits\stl_tree.h|871|instantiated from `std::pair<typename std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator, bool> std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::insert_unique(const _Val&) [with _Key = Condition, _Val = std::pair<const Condition, Action>, _KeyOfValue = std::_Select1st<std::pair<const Condition, Action> >, _Compare = std::less<Condition>, _Alloc = std::allocator<std::pair<const Condition, Action> >]'|
    C:\Program Files\CodeBlocks\MinGW\bin\..\lib\gcc\mingw32\3.4.5\..\..\..\..\include\c++\3.4.5\bits\stl_map.h|360|instantiated from `std::pair<typename std::_Rb_tree<_Key, std::pair<const _Key, _Tp>, std::_Select1st<std::pair<const _Key, _Tp> >, _Compare, _Alloc>::iterator, bool> std::map<_Key, _Tp, _Compare, _Alloc>::insert(const std::pair<const _Key, _Tp>&) [with _Key = Condition, _Tp = Action, _Compare = std::less<Condition>, _Alloc = std::allocator<std::pair<const Condition, Action> >]'|
    D:\P2M\editeur\Regles.cpp|12|instantiated from here|
    C:\Program Files\CodeBlocks\MinGW\bin\..\lib\gcc\mingw32\3.4.5\..\..\..\..\include\c++\3.4.5\bits\stl_function.h|227|error: no match for 'operator<' in '__x < __y'|
    ||=== Build finished: 1 errors, 0 warnings ===|

    le fait que je met en commentaire la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     m_Regle.insert(make_pair(cond,act));
    il n'ya plus d'erreur

    merci d'avance

  2. #2
    Membre éclairé Avatar de Trunks
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2004
    Messages : 534
    Par défaut
    Les maps sont triés automatiquement par clés.
    Or le compilateur ne sait pas comment trier des Condition.
    Donc tu dois ajouter un prédicat de comparaison qui va permettre au compilateur de savoir comment comparer 2 éléments d'un map pour qu'il puisse trier cette dernière...

    Ca ressemblera ainsi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    struct ConditionCompare
    {
        bool operator() (const Condition& cond1, const Condition& cond2) const
        {
            return /* operation de comparaison entre cond1 et cond2 */;
        }
    };
     
    map<Condtion, Operation, ConditionCompare> m_Regle;

  3. #3
    Membre confirmé
    Homme Profil pro
    Software engineer
    Inscrit en
    Août 2008
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Software engineer

    Informations forums :
    Inscription : Août 2008
    Messages : 139
    Par défaut
    je vais essayer , merci bien en tout cas !

  4. #4
    Membre éclairé Avatar de Trunks
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2004
    Messages : 534
    Par défaut
    Citation Envoyé par oswalidos Voir le message
    je vais essayer , merci bien en tout cas !
    Il ne faut pas essayer, il faut réussir

Discussions similaires

  1. [SQL Server]Erreur d'insertion dans la DB
    Par Dnx dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 26/09/2005, 13h55
  2. [Format Date] erreur sur insertion d'une date
    Par philobedo dans le forum SQL
    Réponses: 4
    Dernier message: 14/06/2005, 10h41
  3. Warning et Erreur en Insertion
    Par minimoi1234 dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 07/04/2005, 10h30
  4. erreur SQL ...INSERT INTO
    Par naidinp dans le forum ASP
    Réponses: 20
    Dernier message: 18/09/2003, 11h38

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