возьмите этот простой код:
class A{
public:
virtual void foo() = 0;
void x(){ foo(); }
};
class B: public A{ foo(){ ... } };
main(){
B b;
b.x();
}
Я хочу создать абстрактный класс, который будет иметь функцию, которая будет вызывать функцию, ожидая, что она будет реализована в производном классе.
Вопрос в том, что я не могу заставить эту работу работать, компилятор говорит, что не может скомпилировать, потому что не может найти ссылку (или что-то в этом роде) на foo() для выполнения в x() из базовый класс. Может ли это работать? Может ли кто-нибудь привести мне пример этого?
РЕДАКТИРОВАТЬ: кажется, что это просто не работает, когда "foo();" находится внутри деструктора класса A (базового)...
Это меня просто смутило. знак равно
EDIT2: как это интересно. Я только что создал callfoo(){ foo(); } и теперь он компилируется нормально, но если я попытаюсь вызвать чистую абстрактную функцию непосредственно из деструктора базового класса A, это выдаст мне ошибки... странно. Кто-нибудь знает об этом? О_о
любая помощь в этом, пожалуйста?
Спасибо,
Джонатан
Обновить
Он работал вне деструктора. Сейчас я просто запутался.
Попробуйте поместить "foo()" внутри деструктора класса A(base), по крайней мере, для меня это не компилируется...
любая помощь плз?