Kann nicht von einem Iterator-Typ in einen anderen konvertieren, aber beide sind genau gleich

8

Ich versuche, die ZipStream -Bibliothek zu kompilieren, das ist ein C ++ - Wrapper für zlib.

>

Im Moment bin ich an dem Punkt, wo ich zwei Kompilierfehler auf diesen zwei Zeilen bekomme:

%Vor%

Die Fehler sind:

  

Fehler 15 Fehler C2440: 'initializing' : kann nicht von
'std::_Tree_const_iterator<_Mytree>' in
'std::_Tree_const_iterator<_Mytree>' c: \ users \ ahakeem \ desktop \ zipstream \ ziparchive.cpp 423 1 zipstream konvertiert werden   Fehler 16 Fehler C2440: 'initializing' : kann nicht von
'std::_Tree_const_iterator<_Mytree>' in
'std::_Tree_const_iterator<_Mytree>' c: \ users \ ahakeem \ desktop \ zipstream \ ziparchive.cpp 424 1 zipstream

konvertiert werden

Im Grunde sagt der Compiler, dass er nicht von 'std::_Tree_const_iterator<_Mytree>' in 'std::_Tree_const_iterator<_Mytree>'

konvertieren kann

Irgendwelche Ideen, warum es passiert und wie man es repariert?

edit: Nach weiteren Untersuchungen habe ich festgestellt, dass _core->entries_by_name.begin() als 'std::set<file_info_32*, sort_by_offset>' deklariert ist, was offensichtlich nicht mit dem übereinstimmt, dem der Iterator zugewiesen werden soll ( std::set<file_info_32*, sort_by_offset> ).

Das Umschalten auf _core->_entries_by_offset.begin(); funktioniert, weil _entries_by_offset ein Typ ist, der konsistent ist mit dem, was der Rechtsnachfolger erwartet.

Bedeutet das, dass jemand den Code kaputt gemacht, nicht realisiert und in das Quell-Repo hochgeladen hat? Oder kann dieses Szenario einer fehlerhaften Zuweisung tatsächlich auf einigen Systemen kompiliert werden?

    
tweetypi 28.11.2011, 23:46
quelle

1 Antwort

4

Meine beste Schätzung, die Klassen für _MyTree sind anders.

Suchen Sie nach with _MyTree = SomeClass irgendwo in Ihrer Ausgabe direkt unterhalb des Fehlers.

    
Michael Price 29.11.2011, 02:19
quelle