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 autobahnzugbrueckedie 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