我正在尝试编译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 压缩流
所以基本上编译器说它不能转换'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
该类型与受让人期望获得的类型一致。
这是否意味着有人可能已经破坏了代码,没有意识到并将其上传到源代码库?或者这种错误分配的场景实际上可以在某些系统上编译吗?