Problem mit Vererbung



  • hi,
    folgendes Problem:
    ich habe eine klasse foo und eine klasse bar die von foo erbt.
    jetzt hat bar methoden die foo nicht hat. hab ich irgendwie die möglichkeit
    diese funktionen nutzen zu können wenn mein objekt so

    foo *foobar = new bar();
    

    erstellt wurde?
    also praktisch

    foobar->methode_die_nur_bar_nicht_aber_foo_hat()
    

    ich meine darüber mal was in einem vortrag gesehen zu haben kann mich aber nicht mehr richtig erinnern...

    mfg und schonmal danke,
    cypher



  • Das widerspricht dem Sinn von Vererbung. Du hast an dieser Stelle ein Foo. Wenn Du sicherstellen willst, daß an dieser Stelle auf jeden Fall ein Bar steht, dann schreib halt Bar* statt Foo*. Mit einem cast kannst Du den Compiler natürlich dazu zwingen. Aber das geht schief, wenn Du wirklich mal nur ein Foo hast.

    MfG Jester



  • Mit dynamic_cast downcasten. Wirft ne bad_cast exception falls des wirklich kein bar ist (sondern nur foo). Aber eigentlich widerspricht des echt dem Konzept von Vererbung...



  • Hallo

    falsch, dynamic_cast gibt bei nichtkompatiblen Typen 0 zurück. Es wird keine Exception geworfen.

    /Edit das es trotzdem das schlechtere Mittel ist, stimmt natürlich.

    bis bald
    akari



  • @akari: Jo aber nur wenn du zu nem Pointer casten willst. Willst du zu ner Referenz casten, dann gibts ne exception. :p
    Wir hatten also beide unrecht.

    dynamic_cast



  • ich dank euch.
    ich hab die sache jetzt soweit angepasst, dass es nicht mehr nötig ist 🙂


Anmelden zum Antworten