我是std::map
的新手,最近才开始使用它。
我正面临着其中一个映射的编译问题。
我有一个自定义结构,我正在尝试使用该结构类型的对象创建CString
的映射。
不幸的是,我正面临着问题
Error 3 error C2664: 'std::pair<_Ty1,_Ty2>::pair(const std::pair<_Ty1,_Ty2> &)' : cannot convert parameter 1 from 'ItemInfo *' to 'const std::pair<_Ty1,_Ty2> &'
ItemInfo
是我尝试使用CString
定义映射的结构。
这是我定义映射的方式..
struct ItemInfo
{<some code>}
class XXXX
{
std::map<CString, ItemInfo> myMap;
}
我不确定如何解决这个问题,或者我应该关注什么。
如果有人能告诉我这个错误是什么,以及我如何解决它,我们将不胜感激,谢谢。
修改
好的 - 我搜索了很多,但仍然无法在insert()
函数中看到错误。这就是我使用的:
mAlarmListMpa.insert(tempIterator /*the iterator over the map */, std::pair<CString, ItemInfo>(tagname , info));
修改 来自输出的更多信息:
`
c:\ program files(x86)\ microsoft visual studio 10.0 \ vc \ include \ xmemory(208):错误C2664:'std :: pair&lt; _Ty1,_Ty2&gt; :: pair(const std :: pair&lt; _Ty1 ,_Ty2&gt;&amp;)':无法将参数1从'ItemInfo'转换为'const std :: pair&lt; _Ty1,_Ty2&gt; &安培;” 1 GT;同 1 GT; [ 1 GT; _Ty1 = const CString, 1 GT; _Ty2 = ItemInfo 1 GT; ] 1 GT;原因:无法从'ItemInfo'转换为'const std :: pair&lt; _Ty1,_Ty2&gt;' 1 GT;同 1 GT; [ 1 GT; _Ty1 = const CString, 1 GT; _Ty2 = ItemInfo 1 GT; ] 1 GT;没有可用于执行此转换的用户定义转换运算符,或者无法调用运算符 `
答案 0 :(得分:3)
你没有向我们展示的一些代码是试图将指针传递给ItemInfo
,它应该传递一个键值对,大概是std::pair<CString, ItemInfo>
。完整的错误消息应该显示正在执行哪一行代码。