O que acontecerá se um elemento std :: vector 'cometer suicídio' (usando delete this;)?
Suponha que haja um vetor deItem
s
vector<Item*> items; //{item1, item2, item3}
Então, em outra parte do código,
items[1]->suicide();
onde osuicide
função é:
void Item::suicide()
{
delete this;
}
O que éitems
tamanho do vetor e como é arranjo agora? Isto éOK para fazer isso?
Editar (posso fazer uma pergunta adicional?): Se a disposição desejada da saída for{item1, item3}
o tamanho é2
, e não ponteiro pendente, como fazê-lo de forma auto-destrutiva (a partir doitem2
em si)?
Editar 2 : Obrigado por todas as respostas! Impressionante. Então eu finalmente decidi e encontrei o jeito de fazer isso de fora do objeto porque era uma prática ruim e desnecessariamente complicada