сделал виртуальным, но при попытке отследить при пошаговом выполнении, я его вызов не наблюдаю, использую visual studio.
У меня в производном классе поле указатель на структуру в которой имеется поле указатель на базовый класс, но здесь указатель на базовый класс в роли композиции, вот в этом месте диструктор не вызывается.
Весь код не просматривал, больно уж много его у вас. Диструктор вызывается в трех случаех:
1) При объявлении объекта класса динамически, то есть через new. Диструктор вызывается командой delete.
2) Продолжение 1го случая если вы указали родителя, то диструктор вызывается при уничтожении родителя.
3) Если вы создаете объект класса статически (без new), то диструктор вызывается когда покидается зона видимости этого объекта, будь то функция или класс.
Вроде ничего не упустил.