Hi,
Also ich befasse mich schon seit ner Weile mit C++, bin aber wohl noch ein Noob
Ich wollte jetzt Listen anfangen, also um viele Objekte kontrollieren zu können:
FireBalllist und FireBall sind natürlich vohrer deklariert worden und das Programm läuft auch "fast".
Das Problem ist hier das erase(). Es funktioniert zwar in soweit, als dass es das Objekt löscht, aber es bleibt anscheinend immer noch ein Eintrag in der Liste. Nach längerem Recherchieren habe ich .remove() gefunden. Das soll den Eintrag löschen, aber nicht das Objekt.
Leider funktioniert remove natürlich nicht so wie ich das dachte:
geht nicht. CurFireBall soll ein falscher Parameter sein. Leider habe ich keine Ahnung was ich da reinschreiben soll, obwohl ich diese Fehlermeldung bekomme:
Ich weiß nun, dass ich ein anderen Typ von Parameter benutzten soll, aber ich weiß nicht welchen...
Ich benutze VisualC++ 2005 Express.
hlp plz?
MfG
Also ich befasse mich schon seit ner Weile mit C++, bin aber wohl noch ein Noob

Ich wollte jetzt Listen anfangen, also um viele Objekte kontrollieren zu können:
Code:
for(list<FireBall>::iterator CurFireBall = FireBalllist.begin(); CurFireBall != FireBalllist.end(); ++CurFireBall)
{
CurFireBall->Move();
CurFireBall->Draw(g3d);
if (CurFireBall->GetY() > g3d->GetHeight()-100)
{
FireBalllist.erase(CurFireBall);
}
}
FireBalllist und FireBall sind natürlich vohrer deklariert worden und das Programm läuft auch "fast".
Das Problem ist hier das erase(). Es funktioniert zwar in soweit, als dass es das Objekt löscht, aber es bleibt anscheinend immer noch ein Eintrag in der Liste. Nach längerem Recherchieren habe ich .remove() gefunden. Das soll den Eintrag löschen, aber nicht das Objekt.
Leider funktioniert remove natürlich nicht so wie ich das dachte:
Code:
FireBalllist.remove(CurFireBall);
Code:
1>c:\dokumente und einstellungen\all users\dokumente\backup_3\cs_techdemo\cs_techdemo\main.cpp(34) : error C2664: 'std::list<_Ty>::remove': Konvertierung des Parameters 1 von 'std::list<_Ty>::_Iterator<_Secure_validation>' in 'const FireBall &' nicht möglich
1> with
1> [
1> _Ty=FireBall
1> ]
1> Ursache: Konvertierung von 'std::list<_Ty>::_Iterator<_Secure_validation>' in 'const FireBall' nicht möglich
1> with
1> [
1> _Ty=FireBall,
1> _Secure_validation=false
1> ]
1> Kein benutzerdefinierter Konvertierungsoperator verfügbar, der diese Konvertierung durchführen kann, oder der Operator kann nicht aufgerufen werden
Ich benutze VisualC++ 2005 Express.
hlp plz?
MfG