8

我正在尝试编译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该类型与受让人期望获得的类型一致。

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

4

1 回答 1

4

我最好的猜测,取代的类_MyTree是不同的。

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

于 2011-11-29T02:19:21.333 回答