Zeiger auf Klasse



  • leech schrieb:

    wenn ich das programm bei mir kompiliere, dann gibt er die richtigen sachen aus... also ich kann keinen fehler so mehr finden.... 😕 😮

    Kompilieren kann ich das ganze auch. Er rief allerdings bei den beiden Objekten vom Typ Buch und Film die print-Methode der Medium-Klasse auf. Vielleicht liegt es aber auch daran, dass ich die Attribute in den abgeleiteten Klassen noch einmal mit übernommen habe. Ich werde dies heute Abend mal ausprobieren.

    So kam folgendes heraus:

    Titel: Mein Titel
    Sprache: Deutsch
    Preis: 0.00
    

    aber eigentlich müsste folgendes angezeigt werden

    Titel: Buch1
    Sprache: Deutsch
    Preis: 19.50
    Autor: Autor1
    ISBN: 123-456-789
    

    Vielen Dank für eure Hilfe
    Steffenchen



  • Nur so nebenbei.. Bist zufällig in Köln an der GSO?
    Da würd die Aufgabenstellung nämlcih genau passen 😃



  • Vernochan schrieb:

    Nur so nebenbei.. Bist zufällig in Köln an der GSO?
    Da würd die Aufgabenstellung nämlcih genau passen 😃

    Nein, in Frankfurt. Aber irgendwie cool zu hören, dass die Lehrer zum Teil das Rad auch nicht neu erfinden.



  • Steffenchen schrieb:

    Soweit ich weis, kann ich den Typ string nur benutzen, wenn ich diese Bibliothek explizit einbinde, richtig? Und das darf ich leider nicht 😞

    #include <string>
    using namespace std;
    

    Ich bin mir jetzt nicht sicher, ob dafür ne extra lib eingebunden wird. Aber wenn man schon in C++ programmiert, dann sollte man imho C-Strings (also char Arrays) nach Möglichkeit vermeiden.



  • Das hat mir auch schon jemand gesagt, allerdings darf ich

    #include <string>
    

    leider nicht verwenden.



  • otze schrieb:

    direkt zugriff auf private geht bei public vererbung NIE, nur bei private vererbung und friend ist das möglich

    Hab ich was verpasst? Ich dachte eigentlich, dass das mit public Vererbung und friend geht.



  • hast du. auf das,was in base private ist, hat man in derived keinerlei zugriff.



  • Wieso kompiliert mein Compiler aber sowas? Kannst du mir mal die Stelle im Standard verraten, wo das steht. Ich bin gerade zu faul zum Suchen. 🙂



  • hab ihn grad nicht zur hand 😉

    und sowas darf er nicht compilen:

    class Base{
        int i;//private
    };
    class Derived: public Base{
        public:
            Derived():i(5){}
    };
    

    (der gcc ist derselben meinung)



  • Ja, ganz langsam. Genau wie du, sprach ich von friend. Dein Beispiel sollte deshlab eher so aussehen

    class Derived;
    class Base{
        friend Derived;
        int i;//private
    };
    class Derived: public Base{
        public:
            Derived():i(5){}
    };
    

    Wobei sowas natürlich völliger Blödsinn ist.



  • ich sprach von vererbung oder friend, nicht von vererbung und friend(hab mich wohl ein bischen missverständlich ausgedrückt), dass du nach 2 posts von mir noch immer nicht drauf gekommen bist 😉

    ps: ausserdem wäre es eh sinnlos, bei private vererbung noch ne freundschaft mit derived einzugehen 😃



  • otze schrieb:

    ich sprach von vererbung oder friend, nicht von vererbung und friend

    otze schrieb:

    nur bei private vererbung und friend ist das möglich

    Selbst mit oder stimmt die Behauptung immer noch nicht. 😉 (ISO C++ ➡ 11.2)


Anmelden zum Antworten