Я пытаюсь скомпилировать библиотеку ZipStream , это эффективная оболочка C ++ для zlib.
Прямо сейчас я нахожусь в точке, где я получаю две ошибки компиляции в этих двух строках:
std::set::iterator first = _core->_entries_by_name.begin();
std::set::iterator last = _core->_entries_by_name.end();
Ошибки:
Ошибка 15, ошибка C2440:
«инициализация»
: невозможно преобразовать из'std :: _ Tree_const_iterator <_mytree>'
в'std :: _ Tree_const_iterator <_mytree>'
c: \ users \ ahakeem \ desktop \ zipstream \ ziparchive.cpp 423 1 zipstream
Ошибка 16, ошибка C2440:«инициализация»
: невозможно преобразовать из'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> '
to 'std :: _ Tree_const_iterator <_mytree>'
Есть идеи, почему это происходит и как исправить?
edit: после дальнейшего исследования я обнаружил, что _core-> entries_by_name. begin ()
объявлен как 'std :: set
, что явно несовместимо с тем, что его итератор пытается назначить ( std :: set
).
Переключение на _core -> _ entries_by_offset.begin ();
работает, потому что _entries_by_offset
- это тип, соответствующий тому, что получатель ожидает получить.
Означает ли это, что кто-то, возможно, взломал код, не осознал этого и загрузил его в репозиторий с исходным кодом? Или этот сценарий ошибочного назначения действительно может компилироваться в некоторых системах?