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_*/
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