4

我是新手std::map,最近才开始使用它。

我正面临这些映射之一的编译问题。

我有一个自定义结构,并且正在尝试CString使用该结构类型的对象创建 a 的映射。

不幸的是,我遇到了问题

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 文件 (x86)\microsoft visual studio 10.0\vc\include\xmemory(208): 错误 C2664: 'std::pair<_Ty1,_Ty2>::pair(const std::pair<_Ty1,_Ty2> &)' : 无法将参数 1 从 'ItemInfo' 转换为 'const std::pair<_Ty1,_Ty2> &' 1> with 1> [ 1> _Ty1=const CString, 1> _Ty2=ItemInfo 1> ] 1> 原因: 无法使用 1> [ 1> _Ty1=const CString, 1> _Ty2=ItemInfo 1> ] 1> 从 'ItemInfo' 转换为 'const std::pair<_Ty1,_Ty2>' 1> 1> 没有用户定义的转换运算符可以执行此转换的可用的,或者不能调用运算符 `

4

1 回答 1

4

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

于 2013-10-21T12:29:49.973 回答