std::p air<_Ty1,_Ty2>::p air<_Ty1,_Ty2>& 无法转换参数
std::pair<_Ty1,_Ty2>::pair<_Ty1,_Ty2>& Cannot convert parameter
我是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>
。完整的错误消息应显示哪一行代码正在执行此操作。
- 为什么 const std::p air<K,V>& 在 std::map 上基于范围的 for 循环不起作用?
- C++:无法使用 "=" 运算符更改 std::p air 的值
- 如何在创建自定义迭代器时获得 std::p air 的第一个和第二个?
- 使用 std::p air 进行返回值优化
- 标准::在双类和类的 std::p air 上更大
- 为什么 std::p air 的大小与其元素的大小之和不同?
- 像 std::list<std::p air<string, string>> 这样的结构在返回时会被复制吗?
- 查找 std::vector 中的最小值和最大值 std::p air
- 地图是否将元素存储为 std::p air?
- std::p air 会破坏其动态分配的对象吗?
- 如何在 std::p air 中使用 System::Guid 和自定义枚举?
- boost::mpl 不使用(甚至不兼容)std::p air 的原因是什么?
- 在具有 std::p air 键和值的映射中添加 b2vec2
- 无法访问 std::p air 的成员秒
- 如何在 std::map 中从 std::vector of std::p air 中获取输入?
- 二进制">>":未找到采用类型为"std::p air<int,int>"的右操作数的运算符
- 初始化 std::initializer_list 通过 std:: 初始化 std::p air 在初始化 std::array 时不起作用?
- 通过预处理器创建 std::p air<std::string,some_enum>
- 使用 std::map 和 std::p air 作为键,并将列表作为值
- 为什么 std::map 接受 std::p air 作为密钥,而 std::unordered_map 不接受?