Bonjour,
Je sais que ça parait un peu fou mais je transcrit un code C++/MFC en C++/STL et la je rencontre une difficulté de taille.
Bref j'ai une liste et une map.
les iterator de ma std::list<obj *>::iterator sont les clefs de ma map : std::map<std::list<obj *>::iterator,int>
Les problèmes arrivent à l'ajout et à la suppression d'une pair.
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 #include "CObj.h" std::map<std::list<CObj *>::iterator,int> CObj::ObjetPositions; std::list<CObj *> CObj::Objets; CObj::CObj() { CObj::ObjetPositions[CObj::Objets.begin()] = 2; } CObj::~CObj() { CObj::ObjetPositions.erase(--CObj::Objets.end()); }
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 #ifndef COBJ_H_ #define COBJ_H_ #include <list> #include <map> class CObj { public: CObj(); virtual ~CObj(); static std::map<std::list<CObj *>::iterator,int> ObjetPositions; static std::list<CObj *> Objets; }; #endif /*COBJ_H_*/je cherche une solution TECHNIQUE.C:/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 = std::_List_iterator<CObj*>]':
C:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/bits/stl_map.h:338: instantiated from `_Tp& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const _Key&) [with _Key = std::_List_iterator<CObj*>, _Tp = int, _Compare = std::less<std::_List_iterator<CObj*> >, _Alloc = std::allocator<std::pair<const std::_List_iterator<CObj*>, int> >]'
..\src\CAlarmMsg.cpp:8: instantiated from here
C:/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'
Merci d'avance
Partager