std::list<...> Nächstes Element in der Liste...?
-
Hi,
ich habe folgenden Code:Test GetNext( void ) { if ( !m_List.empty() ) { if ( m_ListIt == NULL ) { m_ListIt = m_List.begin(); // Problem: Warum Crash!? if ( m_ListIt != m_List.end() ) m_ListIt++; return (*m_ListIt); } } else { return NULL; } }Wie mache ich das richtig? Ich habe das Problem, dass es einen Crash gibt, ich will halt mit der Funktion immer das nächste Element in der Liste zurückgegeben bekommen.
Danke im Voraus
Gruß
-
Hab vergessen... Der Fehler ist: list iterators incompatible
Danke
Gruß
-
(Eins vorweg: der Code sieht durch und durch unsinnig aus.)
Crash oder Compiler-Fehler? Fehlermeldung? Deklaration von m_ListIt?
-
INeedHelpAgain schrieb:
Hab vergessen... Der Fehler ist: list iterators incompatible
Damit sollte doch auch schon klar sein, wo der Fehler liegt, oder?
-
Erstmal hast du deine Verschachtelungen irgendwie falsch verknotet - wenn m_ListIt gleich NULL ist, lieferst du letztendlich das zeite Listenelement (oder dereferenzierst end() - böse Sache), andernfalls umgehst du elegant alle return's (das heißt, dort kommt Müll raus).
Zweitens ist ein list<>::iterator KEIN Zeiger, also ist der Vergleich auf NULL vermutlich Nonsens.
-
Oha, ja, das schreit nach einer "not all control pahts return a value" Warning. Ist mir garnicht aufgefallen.
-
Irgendwie ist der Code sinnlos...
Du schreibst einen Iterator für einen Iterator?