У меня есть базовый класс, где в заголовке объявлено 2 указателя. Затем указатели инициализируются ключевым словом "новое" в методе базового класса и удаляются с помощью "delete" в деструкторе базового класса.
У меня также есть производный класс, который наследуется от базового класса. Я также объявляю указатель. В зависимости от логического значения этот указатель присваивается либо указателю базового класса. Однако это приводит к segfault при вызове деструктора базового класса.
Я понимаю, что это происходит потому, что производный класс автоматически удалит указатель перед вызовом деструктора базового класса. Когда в базовом классе вызывается "delete", тогда эта область памяти уже освобождена и результат segfault.
Каков правильный способ сделать это? Моя цель - иметь указатель в производном классе, который может гибко равняться одному из указателей, инициализированных в базовом классе.
Либо не удаляйте указатель в производном классе, либо используйте стандартный интеллектуальный указатель std::shared_ptr
У вашего базового класса должен быть виртуальный деструктор, тогда вы должны переопределить деструктор в производном классе, чтобы убедиться, что все будет удалено в ожидаемом порядке.
Но трудно сказать, что происходит, не видя кода, так что просто мысль...
delete
динамические данные как в производном, так и в базовом классе»