Fragen zu Vererbung, virtuellen Funktionen und Methodenaufruf der Basisklasse durch Pointer



  • Hallo.
    Ich habe ein Problem mit der Vererbung unter C++:

    Class Base {
    protected : 
    virtual int met1() = 0
    
    int met2() {
     //do something
    
     }
    }
    Class derived : private Base {
    
    derived();
    ~derived();
    
    virtual int met1() {
    //do something
    
     } 
    }
    

    main.cpp

    int main() {
    
    derived* der = new derived();
    
    // works
    der->met1();
    //doesn't work
    der->met2();
    return 1;
    }
    

    Dazu habe ich 2 Fragen:

    1.) Die Methode met1() ist also nur in der Basisklasse vorhanden und wird vererbt. Leider kann ich darauf nicht über einen Pointer zugreifen [der->met2();]. Wie bekomme ich das hin?

    2.)
    Muss ich die virtuellen Funktionsprimitive der Bsisklasse (hier met1()) zusätzlich noch einmal in der header-datei der abgeleiteten Klasse aufführen, oder reicht es diese in der source-datei einfach zu implementieren? - Wenn ja, wie geht das (ich bekomme einen Compilerfehler, wenn sie nicht nochmal in der Headerdatei auftauchen...

    Danke 🙂



  • ...



  • Dankeschön für diese wunderschöne Erklärung! 🙂


Anmelden zum Antworten