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 pero tengo unQList<SomeClass*> que adjuntoSomeClass* objetos a El propósito de este destructor enSomeClass es decirDerivedClass para eliminar una instancia específica deSomeClass de su colección deQList<SomeClass*>.

Entonces, en un ejemplo concreto ...

BaseClass = Shape

DerivedClass = Triangle

SomeClass = ShapeProperties que posee una referencia aShape

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

Respuestas a la pregunta(2)

Su respuesta a la pregunta