Я понимаю, почему это происходит, но я застреваю, пытаясь его разрешить ... вот что делает мой код при возникновении ошибки (таким образом, приводя к сбою), когда выходит моя программа ...Как решить «чистый виртуальный метод под названием«
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
удалить конкретный экземпляр SomeClass
из его коллекции QList<SomeClass*>
.
Таким образом, в конкретном примере ...
BaseClass
= Shape
DerivedClass
= Triangle
SomeClass
= ShapeProperties
которому принадлежит ссылка на Shape
Таким образом, я никогда не иметь позвоните по телефону new ShapeProperties
, но у меня есть QList<ShapeProperties*>
внутри Triangle
. Деструктор в ShapeProperties
должен сообщить Triangle
об удалении определенного свойства ShapeProperties
из его коллекции QList<ShapeProperties*>
.
Тогда как узнать, какой экземпляр 'this' я имею в виду, если я его вызываю в производном конструкторе? – user869525
@ user869525: Не могли бы вы перефразировать это? Я не понял ... –
Я, вероятно, неправильно понял это: «Если' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ' " – user869525