Ваш код нарушает очень важное правило, известное как "большая тройка"
Если в вашем классе есть любой деструктора, оператора присваивания или конструктора копирования, тогда ондолжно иметь все три из них .
Причина в том, что если присутствует пользовательский деструктор, то, скорее всего, автоматически синтезируются оператор присваивания и конструктор копирования (которые просто являются членами-символы копировать конструкции или присваивания) не будут правильным решением.
Это правило настолько важно, что если вам случится найти случай, в котором имеет смысл иметь, например, деструктор, но по умолчаниюзатем просто напишите конструктор копирования, по крайней мере, в комментарии, который вы не забыли о конструкторе копирования и / или назначении, но что автоматически предоставленный будет правильным.
Если вместо этого ваши классы не должны копироваться илисоздайте копию, а затем запретите операцию, объявив ее закрытой и не записавion.
В вашем конкретном случае, когда экземпляр любого из ваших двух классов будет скопирован или назначен, указатель будет скопирован, но затем данные будут уничтожены дважды.