So lösen Sie eine "reine virtuelle Methode namens" auf

Ich verstehe, warum dies passiert, aber ich versuche nicht, es zu beheben ... hier ist, was mein Code tut, wenn der Fehler generiert wird (was zu einem Absturz führt), wenn mein Programm beendet wird ...

pure virtual method called

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

Ich habe nie einen Anruf zunew SomeClass aber ich habe eineQList<SomeClass*> was ich anhängeSomeClass* Einwände gegen. Der Zweck dieses Destruktors inSomeClass ist zu erzählenDerivedClass um eine bestimmte Instanz von zu entfernenSomeClass aus seiner Sammlung vonQList<SomeClass*>.

Also, in einem konkreten Beispiel ...

BaseClass = Shape

DerivedClass = Triangle

SomeClass = ShapeProperties die einen Verweis auf besitztShape

Also habe ich nie einen Anruf zunew ShapeProperties aber ich habe eineQList<ShapeProperties*> InnenTriangle. Der Zerstörer inShapeProperties ist zu erzählenTriangle eine bestimmte Eigenschaft von entfernenShapeProperties aus seiner Sammlung vonQList<ShapeProperties*>.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage