У меня проблема с наследованием С++.
У меня есть иерархия классов:
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().