Я понимаю, почему это происходит, но я застреваю, пытаясь его решить... вот что мой код делает, когда генерируется ошибка (таким образом, приводя к сбою), когда моя программа выходит...
pure virtual method called
SomeClass::~SomeClass()
{
BaseClassObject->SomePureVirtualMethod(this);
}
void DerivedClass::SomePureVirtualMethod(SomeClass* obj)
{
//Do stuff to remove obj from a collection
}
У меня никогда не было вызова new SomeClass, но у меня есть QList<SomeClass*>, к которому я добавляю объекты SomeClass*. Цель этого деструктора в SomeClass - сообщить DerivedClass удалить конкретный экземпляр SomeClass из его коллекции QList<SomeClass*>.
Итак, в конкретном примере...
BaseClass= Shape
DerivedClass= Triangle
SomeClass= ShapeProperties, которому принадлежит ссылка на Shape
Итак, я никогда не звоню в new ShapeProperties, но у меня есть QList<ShapeProperties*> внутри Triangle. Деструктор в ShapeProperties должен сообщить Triangle удалить определенное свойство ShapeProperties из его коллекции QList<ShapeProperties*>.