Скрытая виртуальная функция C ++

У меня проблема с наследованием 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 ().

19
задан Benjamin 12 November 2013 в 00:25
поделиться