У меня есть конкретный случай, который трудно выделить здесь во фрагменте кода, но я могу объяснить это ...
У меня есть класс A: public B, а A имеет указатель на член некоторого типа foo * f. В виртуальном деструкторе для A у меня есть что-то вроде:
A::~A() { shutdown(); }
где выключение не виртуально и выглядит примерно так:
void A :: shutdown () {delete f;}
оказывается, во время выполнения это дает мне «чисто виртуальный метод с именем terminate, вызываемый без активного исключения Aborted (core dumped)», но если я удаляю shutdown () из тела деструктора и вызываю его напрямую, а затем позволяю Деструктор бежит ... Я больше не понимаю ...
Что может быть причиной такого поведения? Я пытался перейти с GDB, но он огромен, и я даже не уверен, что искать. Любые идеи будут очень цениться!