Cómo resolver el "método virtual puro llamado"

Entiendo por qué sucede esto, pero estoy atascado tratando de resolverlo ... esto es lo que hace mi código cuando se genera el error (lo que provoca una falla) cuando mi programa sale ...

pure virtual method called

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

Nunca tengo una llamada anew SomeClass&nbsp;pero tengo unQList<SomeClass*>&nbsp;que adjuntoSomeClass*&nbsp;objetos a El propósito de este destructor enSomeClass&nbsp;es decirDerivedClass&nbsp;para eliminar una instancia específica deSomeClass&nbsp;de su colección deQList<SomeClass*>.

Entonces, en un ejemplo concreto ...

BaseClass = Shape

DerivedClass = Triangle

SomeClass = ShapeProperties&nbsp;que posee una referencia aShape

Por lo tanto, nunca tengo una llamada anew ShapeProperties&nbsp;pero tengo unQList<ShapeProperties*>&nbsp;dentro deTriangle. El destructor enShapeProperties&nbsp;es decirTriangle&nbsp;para eliminar una propiedad especifica deShapeProperties&nbsp;de su colección deQList<ShapeProperties*>.