надо корректно обрабатывать ситуацию повторного вызова деструктора. В этом случае деструктор не должен пытаться освобождать в динамической памяти объекты повторно
Сама по себе ситуация повторного вызова деструктора на одном и том же объекте - уже является ошибкой. Это значит, что например ты сделал 2 раза delete одному и тому же объекту. Как можно корректно обрабатывать эту ситуацию в деструкторе то? :D Раз ты второй раз попал в деструктор одного и того же объекта - это уже ошибка, и ошибка на уровне выше, а не в деструкторе.