std::p air<_Ty1,_Ty2>::p air<_Ty1,_Ty2>& 无法转换参数

std::pair<_Ty1,_Ty2>::pair<_Ty1,_Ty2>& Cannot convert parameter

本文关键字:air Ty2 gt Ty1 lt 参数 转换 std      更新时间:2023-10-16

我是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::p air<_Ty1,_Ty2>::p air(const std::p air<_Ty1,_Ty2> &)":无法将参数 1 从"ItemInfo"转换为"const std::p air<_Ty1,_Ty2> &' 1> 1> [ 1> _Ty1=const CString, 1> _Ty2=项目信息 1> ] 1> 原因:无法从"ItemInfo"转换为"const std::p air<_Ty1,_Ty2>" 1> 1> [ 1> _Ty1=const CString, 1> _Ty2=项目信息 1> ] 1> 没有可用的用户自定义转换运算符可以执行此转换,或者无法调用该运算符 `

您没有向我们展示的一些代码试图传递一个指针,指向ItemInfo它应该传递键值对的位置,大概是std::pair<CString, ItemInfo>。完整的错误消息应显示哪一行代码正在执行此操作。