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?

questionAnswers(8)

yourAnswerToTheQuestion