std::map iterator macht probleme



  • Edit: Failed 😕 Hab den Returnparameter nicht als Referenz zurückgegeben, da muss ich mich auch nicht wundern...

    Ich habe den folgenden Code

    //
    inline std::map<int, W_RX_Point *> getPoints(){ return points_;}
    //
    	for(std::map<int, W_RX_Point *>::iterator pointIter = raw_.getPoints().begin(); 
    		pointIter != raw_.getPoints().end(); 
    		++pointIter)
    	{}
    

    Und wenn ich diesen ausführe, knallt ne assertion 🙂
    Zu dem Zeitpunkt sind in points_ 1265 Objekte

    Hier ist ein Screen (der ist nicht von mir), der genau die Fehlermeldung liefert

    http://64.15.74.3/~majorpic/windows%20error%20message.jpg

    Die erste Zuweisung klappt problemlos, aber das pointIter != raw_.getPoints().end(); macht Probleme...

    Debug Assertion Failed
    Expression: map/set iterators incompatible

    Ich verstehe dieses Problem nicht ganz, es ist der gleiche Container



  • Du holst Dir auch zwei Kopien Deiner Map und versuchst den Iterator der ersten Kopie mit dem der zweiten Kopie zu vergleichen. Das wird immer fehlschlagen.

    Entweder Du speicherst den Rückgabewert von getPoints in einer eigenen Kopie, oder in einer Referenz, und wendest auf dieser begin und end an.



  • wie bereits vor deinem Beitrag editiert, habe ich dies ebenfalls rausgefunden 🙂

    Aber danke für die Bestätigung.

    Sowas dummes aber auch (der Fehler, nicht du 🙂 )


Log in to reply