Я понимаю, почему это происходит, но я застреваю, пытаясь его решить... вот что мой код делает, когда генерируется ошибка (таким образом, приводя к сбою), когда моя программа выходит...
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*>
.