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*>
.