¿Qué sucederá si un elemento std :: vector 'se suicida' (usando eliminar esto;)?
Supongamos que hay un vector deItem
s
vector<Item*> items; //{item1, item2, item3}
Luego, en otra parte del código,
items[1]->suicide();
donde elsuicide
la función es:
void Item::suicide()
{
delete this;
}
Que esitems
Tamaño del vector y cómo se arregla ahora? Esbueno ¿para hacer esto?
Editar (¿Puedo hacer una pregunta adicional?): Si la disposición deseada de la salida es{item1, item3}
el tamaño es2
, y sin puntero colgante, cómo hacerlo de forma autodestructiva (desde elitem2
sí mismo)?
Editar 2 : ¡Gracias por todas las respuestas! Increíble. Así que finalmente decidí y encontré la forma de hacerlo desde fuera del objeto porque era una mala práctica y era innecesariamente complicada.