Добрый день. Вопрос по C++
Имею класс с реализацией двусвязного списка со своими дополнениями.
Зовется он
QLIST (не путать со сторонними библиотеками, так как он целиком и полностью является моим велосипедом)
Оперирует он структурами, типа:
Код: Выделить всё
typedef struct _tag_Node
{
long int nodeId;
Node *next;
Node *prev;
void *ptr;
}Node, *pNode;
ID нужен для того, чтобы можно было идентифицировать конкретный узел.
Указатели next и prev содержат адреса следующего и предыдущего узлов соответственно.
ptr - указатель типа void. В него собственно вкладывается адрес данных, ассоциированных с этим узлом.
А это деструктор класса:
Код: Выделить всё
////////////////////////////////////////////////////////////////////////////
QLIST::~QLIST()
{ // Удаление всех записей по уничтожению объекта (деструктор класса QLIST)
NdPoint = NdFirst; // Присваиваем рабочему указателю адрес первого элемента
while(NdPoint != 0) // Цикл не выполнит ни одну итерацию, если список был пустым и прервется по удалению последнего элемента
{
NdFirst = NdPoint->next; // Присваиваем в качестве первого элемента следующий.
//Если там NULL, то он далее скопируется NdPoint и цикл завершится.
delete NdPoint; // Удаляем текущий
NdPoint = NdFirst; // Присваиваем первый элемент в качестве текущего.
}
}
Как видно, деструктор удаляет только узлы, а привязанные к узлам данные в памяти так и остаются.
Проблемы как бы нет, так как в программе я сначала перебираю весь список и удаляю привязанные данные,
за тем я удаляю сам объект класса. Но хотелось бы сделать так, чтобы деструктор класса удалял и данные.
Как я понимаю, этот механизм можно реализовать, пользуясь шаблонами классов.
Однако беда в том, что с шаблонами я совсем не дружу. Редко пишу на C++ и раньше обходился без шаблонов.
Можно ли это реализовать через шаблоны и есть какая-нибудь удобоваримая литература по шаблонам?