Ich habe eine benutzerdefinierte Iterator Template-Klasse, die einen std::list
Iterator umschließt. In meiner hasNext()
Methode möchte ich überprüfen, ob der Iterator auf das letzte Element in der Liste verweist. Doch dieser Code:Kann std :: list nicht mit list :: back() vergleichen?
template< class Type >
...
virtual bool hasNext(void)
{
return itTypes != pList->back();
}
...
typename std::list<Type> * pList;
typename std::list<Type>::iterator itTypes;
Erzeugt den Fehler:
error C2678: binary '!=' : no operator found which takes a left-hand operand of type 'std::_List_iterator<_Mylist>'
Wenn ich vergleiche itTypes
-list::begin()
oder list::end()
ich kein Problem bekommen. Die Dokumentation, die ich für STL-Iteratoren gelesen habe, besagt, dass die von std :: list verwendeten bidirektionalen Iteratoren die Vergleichsoperatoren für Gleichheit und Ungleichheit unterstützen. Gibt es einen Grund, warum ich nicht mit list::back()
dann vergleichen kann?
Warum sind die nervigsten Bugs immer die einfachste:/Danke für Ihre Hilfe :) – PeddleSpam