Ah jetzt habe ich erst verstanden, was du da machst
. Sorry habe vorhin keinen Wert auf das Erstellen deiner Objekte gelegt.
Aber jetzt muss ich schon mal nach dem Sinn fragen: Warum legst du ein Array an, in dem sich alle Objekte befinden und legst dann alle Objekte nochmal in einer Liste ab?
Das macht doch egtl. überhaupt keinen Sinn. Dein Ansatz ist sicherlich richtig, einen Container zu verwenden, wenn man Objekte dynamisch erstellen und löschen will. Denn Elemente aus deinem Array löschen ist mitunter etwas gefährlich.
Ich meinte es genauso wie ich es oben geschrieben habe. Denn delete pawns würde ja alle pawn-Objekte zerstören; wnen dann müsstest du schon gezielt ein Objekt in Angriff nehmen mit delete pawns[irgendwas]. Aber das ist auch Quatsch, weil so zwar das Objekt verschwindet, aber du einen leeren Eintrag in deinem Array hast und das kann auf Dauer nicht gut gehen. Die Erstellung der Objekte würde ich daher so handhaben:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
|
std::list< S_Pawn* > test;
for( int i = 0; i < 8; i++ )
{
S_Pawn* pawn = new S_Pawn();
pawn->x = i;
pawn->y = 6;
pawn->white = false;
test.push_back( pawn );
}
|
Dann hast du alle Objekte bequem in der Liste, kannst mit dieser Arbeiten und wenn du einen Eintrag - mit Hilfe meines Codes von oben - löschst, wird das entsprechende Objekt einfach zerstört und ist auch nicht mehr in der Liste vertreten und wird somit nicht mehr behandelt.