Está tudo bem em usar “delete this” para deletar o objeto atual?
Eu estou escrevendo uma lista vinculada e eu quero um destrutor de struct (uma estrutura de nó) para simplesmente excluir-se e não ter efeitos colaterais. Eu quero que o destruidor da minha lista chame iterativamente o destruidor do nó em si (armazenando o próximo nó temporariamente), assim:
//my list class has first and last pointers
//and my nodes each have a pointer to the previous and next
//node
DoublyLinkedList::~DoublyLinkedList
{
Node *temp = first();
while (temp->next() != NULL)
{
delete temp;
temp = temp->next();
}
}
Então, isso seria meu destruidor de nó:
Node::~Node
{
delete this;
}
Isso é aceitável, especialmente neste contexto?