【问题标题】:std::pair<_Ty1,_Ty2>::pair<_Ty1,_Ty2>& Cannot convert parameterstd::pair<_Ty1,_Ty2>::pair<_Ty1,_Ty2>& 无法转换参数
【发布时间】: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> 没有可以执行此转换的用户定义转换运算符,或者无法调用该运算符 `

【问题讨论】:

  • 如果您发布产生错误的行会有所帮助。
  • 我认为您没有正确插入地图。无论如何,发布代码。
  • 向我们展示导致错误的行。
  • 这仍然不是导致错误的行,而是检测到错误的行。

标签: c++ stdmap std-pair


【解决方案1】:

您没有向我们展示的某些代码正在尝试将指针传递给ItemInfo,它应该传递一个键值对,大概是std::pair&lt;CString, ItemInfo&gt;。完整的错误消息应该会告诉您是哪一行代码在执行此操作。

【讨论】:

  • 很可能这是对myMap.insert( )的调用,这是插入键值对的常用方法。
  • 我在上面的编辑中添加了“insert()”代码。如果你能看一下,请。
猜你喜欢
  • 2013-01-15
  • 2020-01-19
  • 2020-02-26
  • 1970-01-01
  • 2015-07-09
  • 1970-01-01
  • 1970-01-01
  • 2021-10-19
  • 1970-01-01
相关资源
最近更新 更多