Methode einer anderen Klasse überschreiben



  • Hallo,

    ich habe ein kleines, eigentlich ganz banales Problem.
    Es gibt 2 Klassen, Class1 und Class2. Class2 hat eine virtual Methode Fkt2. Diese möchte ich in der cpp von Class1 überschreiben.
    Dachte ich, mach ich einfach in der cpp nur nen Eintrag:
    void Class2::Fkt2()
    {
    blablabla;
    }
    Aber darauf greift er gar nicht zu. Also denke ich, ich muss die auch noch in der .h-Datei eintragen. Aber wie da? Da es ja keine Fkt von Class1 ist.

    mfg
    tie



  • schau dir mal

    virtual an

    oder noch besser

    http://fara.cs.uni-potsdam.de/~kaufmann/?page=GenCppFaqs&faq=Overload#Answ

    viel spass



  • Fkt2() ist virtual.
    Class2 ist nicht von Class1 abgeleitet oder umgekehrt.
    In Class1 wird Class2 nur benutzt, jedoch will ich da halt die Methode umschreiben.



  • Geht so nicht. Du kannst einer Klasse nicht aus dem luftleeren Raum eine Methode unterjubeln. Du könntest aber Class2 ableiten (==>Class3), dort die Methode überschreiben und in Class1 die neue Class3 benutzen.



  • sei mir nicht böse

    aber lerne fragen richtig zu stellen

    du sagst in deinem 2ten post

    Class2 ist nicht von Class1 abgeleitet oder umgekehrt.
    In Class1 wird Class2 nur benutzt, jedoch will ich da halt die Methode umschreiben.

    Also verstehe ich nicht richtig. Maybe bin ich zu dumm, aber sorry ich checks nicht.

    du hast 2 klassen

    class Person
    und class autobahnzugbruecke

    die sind weder verschweagert noch verwandt

    das passt ja zu deiner aussage

    Class2 ist nicht von Class1 abgeleitet oder umgekehrt.

    wie benutzt du jetzt in class 1 ( class person ) die 2te klasse? ich checks nicht
    willst du das hier machen?

    class Person p;
    p.fkt2(); // jetzt soll er von klasse 2 ( class autozug.... ) eine methode nehmen?

    was meinst du mit "Methoden umschreiben"? hast du in class 1 und in class 2 jeweils eine methode die fkt2() heisst aber je nach bedarf das passende nehmen soll?



  • ne, ich meine folgendes 😉
    es gibt in Class2 eine Fkt2() - und nur in Class2
    Class1 wird ganz normal initialisiert, ohne "Mutterklasse". Es beinhaltet jedoch eine Varibale der von Class2, z.b. Class2 abc;
    Ich möchte nun in der cpp-Datei zu Class1 die Methode Fkt2 von Class2 "neu definieren", da, wenn ich diese in der cpp von Class2 ändere ein Fehler kommt. Dieser kommt daher, weil in Fkt2 eine Variable des Typs Class1 benutzt wird, ich die cpp von Class1 also includen muss und in just diesem Moment immer ein Fehler auftritt:
    c:\battbackup\onuview.h(29) : error C2065: 'IDD_ONUVIEW' : nichtdeklarierter Bezeichner
    c:\battbackup\onuview.h(29) : error C2057: Konstanter Ausdruck erwartet
    Also dachte ich mir, wenn ich die Fkt2 in der cpp von Class1 aber immernoch als Memberfkt von Class2 überschreibe, kann ich den Fehler eventuell umgehen.
    Nun alles klar?



  • zerstreuter schrieb:

    Geht so nicht. Du kannst einer Klasse nicht aus dem luftleeren Raum eine Methode unterjubeln. Du könntest aber Class2 ableiten (==>Class3), dort die Methode überschreiben und in Class1 die neue Class3 benutzen.

    das ist z.b. eine lösung. Was würd dagegen sprechen?

    oder durchforste den link den ich gegeben habe. die schreiben immer gute tipps 😉



  • hab jetzt die fehlermeldung weggekriegt 😃
    damit hat sich das prob mit dem überschreiben der Methode geklärt
    aber thx für eure Hilfe


Anmelden zum Antworten