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