的std ::对< _Ty1,_Ty2> ::对< _Ty1,_Ty2>&安培;无法转换参数

时间:2013-10-21 12:25:09

标签: c++ stdmap std-pair

我是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;没有可用于执行此转换的用户定义转换运算符,或者无法调用运算符   `

1 个答案:

答案 0 :(得分:3)

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