Vererbungs Problem



  • Hallo mit einander,

    habe wie folgt zwei Klassen:

    class A {
      A(){};
      ~A(){};
      void virtual foo() {
         //FOOA hier einige Zeilen Code
      }
    };
    
    class B : public A {
      B(){};
      ~B(){};
      void foo() {
         //FOOB hier noch mehr Zeilen Code
      }
    };
    

    Nun möchte ich bei meiner B-Klasse die Methode foo() aufrufen, was wiederum den Code //FOOB aufruft. Kann man es irgendwie hinbekommen, dass er auch den ganzen Code von foo() aus A ( also den //FOOA Code ) aufruft ohne den Code zu duplizieren?

    Ich hoffe mein anliegen ist verständlich geworden.



  • // in B::foo():
    A::foo();
    


  • Bashar schrieb:

    // in B::foo():
    A::foo();
    

    Arg, dachte immer damit kann man nur static methoden aufrufen. Danke für die schnelle Antwort 🙂



  • C++-Bashing gelöscht.


  • Mod

    Wutz schrieb:

    Was machst du z.B. wenn sich deine Klassenhierarchie mal ändert?
    Viel Spaß beim Ändern all dieser expliziten Referenzen ala baseclass:: usw.

    typedef A Baseclass;
    


  • Wutz schrieb:

    Was machst du z.B. wenn sich deine Klassenhierarchie mal ändert?
    Viel Spaß beim Ändern all dieser expliziten Referenzen ala baseclass:: usw.

    ab in die c-ecke, schämen!



  • Wutz schrieb:

    Es ist gerade Sinn und Zweck der Vererbung, den geerbten Code eben nicht zu "duplizieren".
    Vernünftige OOP Sprachen (nicht C++) stellen für diese OOP-Trivialanforderung auch vernünftige Sprachmittel zur Verfügung, hierfür natürlich OHNE explizite Angabe der verwendeten Basisklasse. Was machst du z.B. wenn sich deine Klassenhierarchie mal ändert?
    Viel Spaß beim Ändern all dieser expliziten Referenzen ala baseclass:: usw.

    So was Dämliches hab ich länger nicht mehr gelesen. Wie stellst du dir das vor, wenn eine Klasse mal mehrere Basisklassen hat?

    Im Übrigen ist Sinn und Zweck (öffentlicher) Vererbung nicht die Vermeidung von Codeduplikation, sondern die Modellierung einer ist-ein-Beziehung (Stichwort Liskov-Substitution). Wenn es darum geht, sich nicht zu wiederholen, ist Komposition in der großen Mehrzahl der Fälle der bessere Weg.

    schwarz0r pet0r schrieb:

    ab in die c-ecke, schämen!

    Nach dem Ausbruch würde ich eher "ab in die Java-Ecke" sagen. In der C-Ecke redet der ja auch nur Stuss.


Anmelden zum Antworten