multiple inheritance



  • #include <iostream>
    using namespace std;
    
    class Bar
    { };
    
    class Foo
    { };
    
    class Baz : public Bar,Foo   //Reihenfolge fuer die beiden Zeilen in main() relevant
    { };
    
    int main()
    {   
    
        Foo* f = new Baz();  //ERROR: `Foo' is an inaccessible base of `Baz'
        Bar* f = new Baz(); //kein ERROR
    
        delete f;
        return 0;
    }
    

    Die beiden Zeilen in main() sollten ja eigentlich beide funktionieren.
    Das ist aber nicht der Fall. Die zweite funktioniert z.B. nur, wenn die Klasse Baz in der Erbliste erst von Bar erbt und danach von Foo.
    Analog dazu funktioniert die erste Zeile nur, wenn Foo vor Bar in Baz' Erbliste steht.
    Was soll das?



  • class Baz : public Bar,Foo entspricht class Baz : public Bar, private Foo



  • dankeeee 🙂


Anmelden zum Antworten