STL : utilisation d'une multimap
Bonjour,
je souhaite utiliser une multimap pour associer un chaine avec une classe comme montré ci dessous :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
|
class CDataInfo
{
public:
CDataInfo() { };
~CDataInfo() { };
int nSFID;
int nRecNo;
int nRecLen;
int nRecOffset;
int nDataType;
int nDataLen;
};
typedef multimap<CString, CDataInfo>::iterator CDataListIter;
class CDataList
{
public:
CDataList() { m_It = NULL;};
~CDataList() { };
void Clear() { m_DataInfoList.clear(); }
void AddTag( CString strTag, int nSFID, int nRecNo,
int nRecLen, int nRecOffset, int nDataType, int nDataLen)
{
m_DataInfo.nSFID = nSFID;
m_DataInfo.nRecNo = nRecNo;
m_DataInfo.nRecLen = nRecLen;
m_DataInfo.nRecOffset = nRecOffset;
m_DataInfo.nDataType = nDataType;
m_DataInfo.nDataLen = nDataLen;
m_DataInfoList.insert(strTag, DataInfo); ????????? ERREUR DE COMPIL
}
CDataListIter GetHead() { return m_DataInfoList.begin();}
CDataListIter GetTail() { return m_DataInfoList.end(); }
long GetSize() { return m_DataInfoList.size(); }
protected:
CDataInfo m_DataInfo;
multimap<CString, CDataInfo> m_DataInfoList;
CDataListIter m_It;
}; |
J'ai une erreur de compilation :
d:\projet en cours\borne_160805\carddata.h(152) : error C2664: 'class std::_Tree<class CString,struct std::pair<class CString const ,class CDataInfo>,struct std::multimap<class CString,class CDataInfo,struct std::less<class CString>,class std::alloc
ator<class CDataInfo> >::_Kfn,struct std::less<class CString>,class std::allocator<class CDataInfo> >::iterator __thiscall std::multimap<class CString,class CDataInfo,struct std::less<class CString>,class std::allocator<class CDataInfo> >::insert(cl
ass std::_Tree<class CString,struct std::pair<class CString const ,class CDataInfo>,struct std::multimap<class CString,class CDataInfo,struct std::less<class CString>,class std::allocator<class CDataInfo> >::_Kfn,struct std::less<class CString>,clas
s std::allocator<class CDataInfo> >::iterator,const struct std::pair<class CString const ,class CDataInfo> &)' : cannot convert parameter 1 from 'class CString' to 'class std::_Tree<class CString,struct std::pair<class CString const ,class CDataInfo
>,struct std::multimap<class CString,class CDataInfo,struct std::less<class CString>,class std::allocator<class CDataInfo> >::_Kfn,struct std::less<class CString>,class std::allocator<class CDataInfo> >::iterator'
No constructor could take the source type, or constructor overload resolution was ambiguous
Et je ne comprends pas exactement pourquoi la syntaxe n'est pas bonne.