C++学习(四八三)无法从“std::pair<const _Kty,_Ty>”转换为“_Objty”

Posted hankern

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++学习(四八三)无法从“std::pair<const _Kty,_Ty>”转换为“_Objty”相关的知识,希望对你有一定的参考价值。

使用vs2017编译osgEarth2.9的FeatureSourceIndexNode.cpp遇到的

使用VS2017编译osgEarth2.7过程中遇到问题总结_justslowdown_going的博客-CSDN博客>> xmemory0(881): error C2440: “初始化”: 无法从“std::pair<const _Kty,_Ty>”转换为 to _Objty位置:FeatureSourceIndexNode.cpp解决方法:使用osgEarth3.0版本下的“struct KeyIter : public std::iterator<std::input_iterator_tag, typename T::value_type>”替换掉2.6版本下的“struhttps://blog.csdn.net/siwen0/article/details/112137409VS2017 15.8: build issue / FeatureSourceIndexNode.cpp · Issue #1187 · gwaldron/osgearth · GitHubhttps://github.com/gwaldron/osgearth/issues/1187解决办法:

1、修改源代码

2、使用vs2010编译

FeatureSourceIndexNode.cpp
1>e:\\projects\\qt5.12\\osg_earth_src\\osgearth\\osgearth2.9\\src\\osgearth\\virtualprogram : warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
1>c:\\program files (x86)\\microsoft visual studio\\2017\\community\\vc\\tools\\msvc\\14.16.27023\\include\\xmemory0(881): error C2440: “初始化”: 无法从“std::pair<const _Kty,_Ty>”转换为“_Objty”
1>        with
1>        [
1>            _Kty=osgEarth::Features::FeatureID,
1>            _Ty=osg::ref_ptr<osgEarth::Features::RefIDPair>
1>        ]
1>        and
1>        [
1>            _Objty=unsigned long
1>        ]
1>c:\\program files (x86)\\microsoft visual studio\\2017\\community\\vc\\tools\\msvc\\14.16.27023\\include\\xmemory0(881): note: 没有可用于执行该转换的用户定义的转换运算符,或者无法调用该运算符
1>c:\\program files (x86)\\microsoft visual studio\\2017\\community\\vc\\tools\\msvc\\14.16.27023\\include\\xtree(984): note: 参见对正在编译的函数 模板 实例化“void std::_Default_allocator_traits<_Alloc>::construct<_Ty,std::pair<const _Kty,osg::ref_ptr<osgEarth::Features::RefIDPair>>&>(_Alloc &,_Objty *const ,std::pair<const _Kty,osg::ref_ptr<osgEarth::Features::RefIDPair>> &)”的引用
1>        with
1>        [
1>            _Alloc=std::allocator<std::_Tree_node<unsigned long,std::_Default_allocator_traits<std::allocator<osgEarth::Features::FeatureID>>::void_pointer>>,
1>            _Ty=unsigned long,
1>            _Kty=osgEarth::Features::FeatureID,
1>            _Objty=unsigned long
1>        ]
1>c:\\program files (x86)\\microsoft visual studio\\2017\\community\\vc\\tools\\msvc\\14.16.27023\\include\\xtree(983): note: 参见对正在编译的函数 模板 实例化“void std::_Default_allocator_traits<_Alloc>::construct<_Ty,std::pair<const _Kty,osg::ref_ptr<osgEarth::Features::RefIDPair>>&>(_Alloc &,_Objty *const ,std::pair<const _Kty,osg::ref_ptr<osgEarth::Features::RefIDPair>> &)”的引用
1>        with
1>        [
1>            _Alloc=std::allocator<std::_Tree_node<unsigned long,std::_Default_allocator_traits<std::allocator<osgEarth::Features::FeatureID>>::void_pointer>>,
1>            _Ty=unsigned long,
1>            _Kty=osgEarth::Features::FeatureID,
1>            _Objty=unsigned long
1>        ]
1>c:\\program files (x86)\\microsoft visual studio\\2017\\community\\vc\\tools\\msvc\\14.16.27023\\include\\xtree(1162): note: 参见对正在编译的函数 模板 实例化“std::_Tree_node<_Ty,std::_Default_allocator_traits<_Alloc>::void_pointer> *std::_Tree_comp_alloc<_Traits>::_Buynode<std::pair<const _Kty,osg::ref_ptr<osgEarth::Features::RefIDPair>>&>(std::pair<const _Kty,osg::ref_ptr<osgEarth::Features::RefIDPair>> &)”的引用
1>        with
1>        [
1>            _Ty=unsigned long,
1>            _Alloc=std::allocator<osgEarth::Features::FeatureID>,
1>            _Traits=std::_Tset_traits<osgEarth::Features::FeatureID,std::less<osgEarth::Features::FeatureID>,std::allocator<osgEarth::Features::FeatureID>,false>,
1>            _Kty=osgEarth::Features::FeatureID
1>        ]
1>c:\\program files (x86)\\microsoft visual studio\\2017\\community\\vc\\tools\\msvc\\14.16.27023\\include\\xtree(1162): note: 参见对正在编译的函数 模板 实例化“std::_Tree_node<_Ty,std::_Default_allocator_traits<_Alloc>::void_pointer> *std::_Tree_comp_alloc<_Traits>::_Buynode<std::pair<const _Kty,osg::ref_ptr<osgEarth::Features::RefIDPair>>&>(std::pair<const _Kty,osg::ref_ptr<osgEarth::Features::RefIDPair>> &)”的引用
1>        with
1>        [
1>            _Ty=unsigned long,
1>            _Alloc=std::allocator<osgEarth::Features::FeatureID>,
1>            _Traits=std::_Tset_traits<osgEarth::Features::FeatureID,std::less<osgEarth::Features::FeatureID>,std::allocator<osgEarth::Features::FeatureID>,false>,
1>            _Kty=osgEarth::Features::FeatureID
1>        ]
1>c:\\program files (x86)\\microsoft visual studio\\2017\\community\\vc\\tools\\msvc\\14.16.27023\\include\\xtree(1345): note: 参见对正在编译的函数 模板 实例化“std::_Tree_const_iterator<std::_Tree_val<std::_Tree_simple_types<_Ty>>> std::_Tree<std::_Tset_traits<_Kty,_Pr,_Alloc,false>>::emplace_hint<std::pair<const _Kty,osg::ref_ptr<osgEarth::Features::RefIDPair>>&>(std::_Tree_const_iterator<std::_Tree_val<std::_Tree_simple_types<_Ty>>>,std::pair<const _Kty,osg::ref_ptr<osgEarth::Features::RefIDPair>> &)”的引用
1>        with
1>        [
1>            _Ty=unsigned long,
1>            _Kty=osgEarth::Features::FeatureID,
1>            _Pr=std::less<osgEarth::Features::FeatureID>,
1>            _Alloc=std::allocator<osgEarth::Features::FeatureID>
1>        ]
1>c:\\program files (x86)\\microsoft visual studio\\2017\\community\\vc\\tools\\msvc\\14.16.27023\\include\\xtree(1345): note: 参见对正在编译的函数 模板 实例化“std::_Tree_const_iterator<std::_Tree_val<std::_Tree_simple_types<_Ty>>> std::_Tree<std::_Tset_traits<_Kty,_Pr,_Alloc,false>>::emplace_hint<std::pair<const _Kty,osg::ref_ptr<osgEarth::Features::RefIDPair>>&>(std::_Tree_const_iterator<std::_Tree_val<std::_Tree_simple_types<_Ty>>>,std::pair<const _Kty,osg::ref_ptr<osgEarth::Features::RefIDPair>> &)”的引用
1>        with
1>        [
1>            _Ty=unsigned long,
1>            _Kty=osgEarth::Features::FeatureID,
1>            _Pr=std::less<osgEarth::Features::FeatureID>,
1>            _Alloc=std::allocator<osgEarth::Features::FeatureID>
1>        ]
1>e:\\projects\\qt5.12\\osg_earth_src\\osgearth\\osgearth2.9\\src\\osgearthfeatures\\featuresourceindexnode.cpp(102): note: 参见对正在编译的函数 模板 实例化“void std::_Tree<std::_Tset_traits<_Kty,_Pr,_Alloc,false>>::insert<`anonymous-namespace'::KeyIter<osgEarth::Features::FeatureSourceIndexNode::FIDMap>>(_Iter,_Iter)”的引用
1>        with
1>        [
1>            _Kty=osgEarth::Features::FeatureID,
1>            _Pr=std::less<osgEarth::Features::FeatureID>,
1>            _Alloc=std::allocator<osgEarth::Features::FeatureID>,
1>            _Iter=`anonymous-namespace'::KeyIter<osgEarth::Features::FeatureSourceIndexNode::FIDMap>
1>        ]
1>e:\\projects\\qt5.12\\osg_earth_src\\osgearth\\osgearth2.9\\src\\osgearthfeatures\\featuresourceindexnode.cpp(102): note: 参见对正在编译的函数 模板 实例化“void std::_Tree<std::_Tset_traits<_Kty,_Pr,_Alloc,false>>::insert<`anonymous-namespace'::KeyIter<osgEarth::Features::FeatureSourceIndexNode::FIDMap>>(_Iter,_Iter)”的引用
1>        with
1>        [
1>            _Kty=osgEarth::Features::FeatureID,
1>            _Pr=std::less<osgEarth::Features::FeatureID>,
1>            _Alloc=std::allocator<osgEarth::Features::FeatureID>,
1>            _Iter=`anonymous-namespace'::KeyIter<osgEarth::Features::FeatureSourceIndexNode::FIDMap>
1>        ]
1>已完成生成项目“osgEarthFeatures.vcxproj”的操作 - 失败。
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========

以上是关于C++学习(四八三)无法从“std::pair<const _Kty,_Ty>”转换为“_Objty”的主要内容,如果未能解决你的问题,请参考以下文章

C++学习(三四八)CLang GCC

C++学习(二八三)Maven仓库下载pom文件

C++学习(四八一)peek

C++学习(四八四)anaconda常用命令

C++学习(四八四)anaconda常用命令

C++学习(四八二)zlib的inflate