无法从一个迭代器类型转换为另一个迭代器类型,但两者完全相同

twe*_*ypi 8 c++ iterator visual-studio-2010 zipstream

我正在尝试编译ZipStream库,它是effectivley的一个用于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();
Run Code Online (Sandbox Code Playgroud)

错误是:

错误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>)的内容不一致.

将其切换为_core->_entries_by_offset.begin();有效,因为它_entries_by_offset是与受让人期望获得的类型一致的类型.

这是否意味着有人可能破坏了代码,没有意识到并将其上传到源代码库?或者,这种错误分配的场景是否真的可以在某些系统上编译?

Mic*_*ice 4

我最好的猜测是,替换的课程_MyTree是不同的。

在输出中查找with _MyTree = SomeClass错误下方的某个位置。