У меня есть абстрактный класс вроде этого:Как правильно распоряжаться абстрактными членами абстрактного класса?
class IMovable {
protected:
MovementPath *movementPath;
public:
IMovable();
virtual ~IMovable();
void setMovementPath(MovementPath *movementPath);
};
Где movementPath
является абстрактным классом по себе.
При удалении конкретной реализации IMovable
мне нужно удалить movementPath
(точнее, конкретную реализацию в этой точке) вместе с любым из его членов.
Как это сделать?
Я пробовал виртуальные деструкторы, но это не сработало (я, возможно, что-то испортил), и удаление его в конкретных реализациях приводит к сбою программы, которая должна быть, потому что это неправильно, кощунственно и не нужно делать там.
Что мне делать?
я не понял вопрос. Является ли MovementPath базовым абстрактным классом? – mkmostafa
Вы, вероятно, несколько раз нарушали правило трижды. Прекратите использование исходных указателей с семантикой собственности. Это не 1996 год. –
сделаю. Не знал о не сырых типах. – Karlovsky120