У меня проблема с наследованием C ++.
У меня иерархия классов:
class A {
public:
virtual void onFoo() {}
virtual void onFoo(int i) {}
};
class B : public A {
public:
virtual void onFoo(int i) {}
};
class C : public B {
};
int main() {
C* c = new C();
c->onFoo(); //Compile error - doesn't exist
}
Мой вопрос: почему это не компилируется? Насколько я понимаю, C должен наследовать обе функции onFoo от A - и на самом деле это компилируется, если вы удалите переопределение onFoo в B, - но g ++ выдает ошибку о том, что C не имеет функции onFoo ().