Я пытаюсь скомпилировать библиотеку ZipStream , это эффективная оболочка C ++ для zlib.
Прямо сейчас я нахожусь в точке, где я получаю две ошибки компиляции в этих двух строках:
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>'
Есть идеи, почему это происходит и как это исправить?
edit: после дальнейшего изучения я обнаружил, что _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
является типом, совместимым с ожидаемым получателем.
Означает ли это, что кто-то, возможно, нарушил код, не осознал его и загрузил в исходное хранилище? Или этот сценарий ошибочного назначения может на самом деле компилироваться в некоторых системах?