iterator en clef de map impossible ?
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:
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:
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_*/ |
Citation:
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'
je cherche une solution TECHNIQUE.
Merci d'avance