Was passiert, wenn ein std :: vector-Element 'Selbstmord begeht' (mit delete this;)?
Angenommen, es gibt einen Vektor vonItem
s
vector<Item*> items; //{item1, item2, item3}
Dann, in einem anderen Teil des Codes,
items[1]->suicide();
bei dem diesuicide
Funktion ist:
void Item::suicide()
{
delete this;
}
Was istitems
Vektorgröße und wie ist es jetzt Anordnung? Es istin Ordnung um dies zu tun?
Bearbeiten (Darf ich noch eine Frage stellen?): Wenn die gewünschte Anordnung der Ausgabe ist{item1, item3}
Größe ist2
, und kein baumelnder Zeiger, wie es auf selbstzerstörende Weise zu tun ist (von deritem2
selbst)?
Bearbeiten 2 : Danke für alle Antworten! Genial. Also entschied ich mich und fand den Weg, es von außerhalb des Objekts zu tun, weil es eine schlechte Übung und unnötig kompliziert war