I’m studying C++ on my own time, and writing a linked list to try and get the hang of it. I’m worried about the way I’ve come up to delete the object. It’s a singly linked list. Here’s the destructor:
template <typename T>
LinkedList<T>::~LinkedList()
{
Node<T> * current = this->first;
do {
Node * temp = current->next;
delete current; // THIS JUST MIGHT BE A TERRIBLE IDEA!!!
Node * current = temp; // new current-- might work with the current
// delete a line above
} while (current->next != 0); // need to leave this->last so that I don't
// delete it twice in the next line.
// Just realized I'm deleting this->first, then
// in the next line [implicitly] deleting it again!
//
delete this;
}
I create a pointer to the first node in the list, create a temporary pointer to the next node, delete the first pointer, create a new pointer with the same name, which then loops back. After it’s done, it deletes the ‘this’ pointer.
I’m sure you can see why I’m worried with the way I create a new pointer with the same name as a deleted pointer.
delete thisin the destructor.Nodeis a template, then you need to writeNode<T>in all of those definitions.current, just assign it a new value.Other than that, I don’t see any other problems in this snippet.