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&nbsp;mas eu tenho umQList<SomeClass*>&nbsp;que eu adicionoSomeClass*&nbsp;objetos para. O propósito deste destruidor emSomeClass&nbsp;é contarDerivedClass&nbsp;para remover uma instância específica deSomeClass&nbsp;de sua coleção deQList<SomeClass*>.

Então, em um exemplo concreto ...

BaseClass = Shape

DerivedClass = Triangle

SomeClass = ShapeProperties&nbsp;que possui uma referência aShape

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