我正在尝试编译ZipStream库,它是有效的zlib的C ++包装器。
现在我正处于这两行的两个编译错误的位置:
std::set<file_info_32*, sort_by_offset>::iterator first = _core->_entries_by_name.begin();
std::set<file_info_32*, sort_by_offset>::iterator last = _core->_entries_by_name.end();
错误是:
错误15错误C2440:
'initializing'
:无法转换为
'std::_Tree_const_iterator<_Mytree>'
到
'std::_Tree_const_iterator<_Mytree>'
c:\ users \ ahakeem \ desktop \ zipstream \ ziparchive.cpp 423 1 zipstream
错误16错误C2440:'initializing'
:无法从转换为'std::_Tree_const_iterator<_Mytree>'
到
'std::_Tree_const_iterator<_Mytree>'
c:\ users \ ahakeem \ desktop \ zipstream \ ziparchive.cpp 424 1 zipstream
所以基本上编译器说它无法从'std::_Tree_const_iterator<_Mytree>'
转换为'std::_Tree_const_iterator<_Mytree>'
任何想法为什么会发生以及如何解决?
编辑:在进一步调查之后,我发现_core->entries_by_name.begin()
被声明为'std::set<file_info_32*, sort_by_offset>'
,这显然与其迭代器尝试分配给它的内容不一致(std::set<file_info_32*, sort_by_offset>
)。 / p>
将其切换为_core->_entries_by_offset.begin();
是有效的,因为_entries_by_offset
是与受让人期望得到的类型一致的类型。
这是否意味着有人可能破坏了代码,没有意识到并将其上传到源代码库?或者,这种错误分配的场景是否真的可以在某些系统上编译?
答案 0 :(得分:4)
我最好的猜测,取代_MyTree
的类别不同。
在输出中的某处找到with _MyTree = SomeClass
错误。