【发布时间】:2013-10-21 12:25:09
【问题描述】:
我是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): error C2664: 'std::pair<_ty1>::pair(const std::pair<_ty1> &)' : 无法将参数 1 从 'ItemInfo' 转换为 'const std::pair<_ty1> &' 1> 与 1> [ 1> _Ty1=const CString, 1> _Ty2=项目信息 1>] 1> 原因:无法从 'ItemInfo' 转换为 'const std::pair<_ty1>' 1> 与 1> [ 1> _Ty1=const CString, 1> _Ty2=项目信息 1>] 1> 没有可以执行此转换的用户定义转换运算符,或者无法调用该运算符 `
【问题讨论】:
-
如果您发布产生错误的行会有所帮助。
-
我认为您没有正确插入地图。无论如何,发布代码。
-
向我们展示导致错误的行。
-
这仍然不是导致错误的行,而是检测到错误的行。