我明白为什么发生这种情况,但我坚持试图解决它“纯称为虚拟方法” ......这里是产生错误时,我的代码做什么(因此,导致崩溃)我的程序退出时...如何解决
pure virtual method called
SomeClass::~SomeClass()
{
BaseClassObject->SomePureVirtualMethod(this);
}
void DerivedClass::SomePureVirtualMethod(SomeClass* obj)
{
//Do stuff to remove obj from a collection
}
我从来没有new SomeClass
来电,但我有一个QList<SomeClass*>
我追加SomeClass*
对象。该析构函数的SomeClass
的目的是告诉DerivedClass
从它的QList<SomeClass*>
收集删除的SomeClass
一个具体实例。
因此,在一个具体的例子...
BaseClass
= Shape
DerivedClass
= Triangle
SomeClass
= ShapeProperties
拥有以Shape
参考所以,我永远不会有致电new ShapeProperties
但我有一个QList<ShapeProperties*>
内Triangle
。 ShapeProperties
中的析构函数是告诉Triangle
从它的QList<ShapeProperties*>
集合中删除ShapeProperties
的特定属性。
那么我如何知道在引用的构造函数中调用了哪个'this'实例? – user869525
@ user869525:你可以尝试改说吗?我不明白... –
我可能误解了这个,“如果'SomePureVirtualMethod'需要在析构函数中调用,那么你必须在类的析构函数中调用它,在那里实际定义你想要的方法。 “ – user869525