Como resolver “método virtual puro chamado”
Eu entendo porque isso está acontecendo, mas estou preso tentando resolvê-lo ... aqui está o que meu código está fazendo quando o erro é gerado (assim, levando a uma falha) quando o meu programa sai ...
pure virtual method called
SomeClass::~SomeClass()
{
BaseClassObject->SomePureVirtualMethod(this);
}
void DerivedClass::SomePureVirtualMethod(SomeClass* obj)
{
//Do stuff to remove obj from a collection
}
Eu nunca tenho uma chamada paranew SomeClass
mas eu tenho umQList<SomeClass*>
que eu adicionoSomeClass*
objetos para. O propósito deste destruidor emSomeClass
é contarDerivedClass
para remover uma instância específica deSomeClass
de sua coleção deQList<SomeClass*>
.
Então, em um exemplo concreto ...
BaseClass
= Shape
DerivedClass
= Triangle
SomeClass
= ShapeProperties
que possui uma referência aShape
Então, eu nunca tenho uma chamada paranew ShapeProperties
mas eu tenho umQList<ShapeProperties*>
dentro deTriangle
. O destruidor emShapeProperties
é contarTriangle
para remover uma propriedade específica deShapeProperties
de sua coleção deQList<ShapeProperties*>
.