Jak rozwiązać „czystą metodę wirtualną zwaną”

Rozumiem, dlaczego tak się dzieje, ale utknąłem przy próbie rozwiązania ... oto co robi mój kod, gdy błąd jest generowany (co prowadzi do awarii), gdy mój program kończy działanie ...

pure virtual method called

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

Nigdy nie dzwonię donew SomeClass ale mamQList<SomeClass*> które dołączamSomeClass* sprzeciwia się. Cel tego destruktora wSomeClass to powiedziećDerivedClass aby usunąć określone wystąpienieSomeClass z jego kolekcjiQList<SomeClass*>.

Więc w konkretnym przykładzie ...

BaseClass = Shape

DerivedClass = Triangle

SomeClass = ShapeProperties który jest właścicielem odniesienia doShape

Więc nigdy nie dzwonię donew ShapeProperties ale mamQList<ShapeProperties*> wnętrzeTriangle. Destruktor wShapeProperties to powiedziećTriangle aby usunąć określoną właściwośćShapeProperties z jego kolekcjiQList<ShapeProperties*>.

questionAnswers(2)

yourAnswerToTheQuestion