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