Virtuelle C++ - Funktion versteckt

Ich habe ein problem mit C++ Vererbung.

Ich habe eine Klassen-Hierarchie:

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
}

Meine Frage ist: warum macht das nicht kompilieren? Mein Verständnis ist, dass C Erben sollen beide onFoo Funktionen von Ein - und in der Tat, diese kompiliert, wenn Sie entfernen die Neudefinition von onFoo in B, aber g++ gibt einen Fehler, der C hat keine onFoo () - Funktion.

Schreibe einen Kommentar