List Iterator not incrementable



  • Moin

    void CGame::CheckCollisions()
    {
    	// Wandkollision überprüfen
    	m_bGameRun = m_Player.CheckCollisions();
    
    	// Sternkollision überprüfen
    	list<CStar>::iterator ItStars = m_StarList.begin();
    
    	while(ItStars != m_StarList.end())
    	{				
    		if(!m_Player.CheckHead(ItStars->GetX(), ItStars->GetY()))
    		{
    			ItStars++;
    		}
    
    		else
    		{
    			ItStars = m_StarList.erase(ItStars);
    			m_Player.NewPart();				
    		}
    	}
    
    } // CheckCollisions
    

    Bekomme, sobald der erase teil, also der else zweig aufgerufen wird eben diese fehlermeldung

    "list iterator not incrementable"

    was eigentlich ja daran liegt dass man das in einer for schleife macht und dann das letzte element übersprungen werden kann. da ich hier aber keine benutze, verstehe ich den fehler nicht.

    hoffe um schnelle hilfe

    gruß kane



  • Ändert NewPart womöglich dieselbe Liste?



  • nein, der greift auf eine andere liste zu und wenn ich die erase zeile zum comment mache, funktioniert es auch ohne probleme, abgesehen davon das halt der gewünschte erase befehl nicht ausgeführt wird 😉



  • Schon das Problem gelöst... Würde mich gern Interessieren woran es lag bzw noch liegt 😃


Anmelden zum Antworten