Como resolver “método virtual puro chamado”

Eu entendo porque isso está acontecendo, mas estou preso tentando resolvê-lo ... aqui está o que meu código está fazendo quando o erro é gerado (assim, levando a uma falha) quando o meu programa sai ...

pure virtual method called

SomeClass::~SomeClass()
{
   BaseClassObject->SomePureVirtualMethod(this);
}
void DerivedClass::SomePureVirtualMethod(SomeClass* obj)
{
    //Do stuff to remove obj from a collection
}

Eu nunca tenho uma chamada paranew SomeClass mas eu tenho umQList<SomeClass*> que eu adicionoSomeClass* objetos para. O propósito deste destruidor emSomeClass é contarDerivedClass para remover uma instância específica deSomeClass de sua coleção deQList<SomeClass*>.

Então, em um exemplo concreto ...

BaseClass = Shape

DerivedClass = Triangle

SomeClass = ShapeProperties que possui uma referência aShape

Então, eu nunca tenho uma chamada paranew ShapeProperties mas eu tenho umQList<ShapeProperties*> dentro deTriangle. O destruidor emShapeProperties é contarTriangle para remover uma propriedade específica deShapeProperties de sua coleção deQList<ShapeProperties*>.

questionAnswers(2)

yourAnswerToTheQuestion