Programmieren - alles kontrollieren 4.937 Themen, 20.655 Beiträge

visual c++ 5.0 Vererbungs Problem

chaosatbrain / 4 Antworten / Flachansicht Nickles

Also das ist etwas kompliziert aber ich werde es versuchen (die Syntax ist blödsin ok)


Ich habe 2 Klassen klasse A und klasse B: klasse B ist von A abgleitete


klasse A hat funktion a1, a2, a3 , a4 ok. Klasse B hat die funktion B1


nun ruft ich in B1 a1 (und geht damtit nach A->a1)  auf,  geht und macht sinn. Ok


nun wird in der Klasse B a1 neu defieniert. so jetzt höre ich auf zu labern und nun kommt das Progblem.


wenn ich wieder in der funtion B1 a1 (B->a1) aufrufe komme ich in die neu definirte funktion (B->a1) Ok


aber wenn ich einen alten funtions aufruf aus a4 habe sprint der mir in das Alte a1 (A-a1) funktion was ich nicht will er soll in die neue (B-a1). was er könnt wenn ich auch a4 neu defienieren würde. aber das will ich nicht. 


vieleicht geht es nicht anders weil wege rechten und ist nicht und geht nicht und so weiter aber wenn eine vererbte Klasse alle funtionenen der Alten übernimt als wär sie in ihr selber geschrieben wie ich es gelernt habe dann sollte ich a1 überschreiben können und es müsten alle funtion der Alten A Klasse die neue B->a1 anspringen 


danke für Antwort


 

bei Antwort benachrichtigen
mr.escape chaosatbrain „visual c++ 5.0 Vererbungs Problem“
Optionen
nun wird in der Klasse B a1 neu defieniert...
... aber wenn ich einen alten funtions aufruf aus a4 habe sprint der mir in das Alte a1 (A-a1) funktion was ich nicht will er soll in die neue (B- a1)
Wenn du in der basis (A) und der abgeleiteten (B) klasse die neue variante von a1 haben willst, dann definier sie doch in der basisklasse (A). Die abgeleitete bekommt die dann ja auch automatisch!

... aber wenn eine vererbte Klasse alle funtionenen der Alten übernimt als wär sie in ihr selber geschrieben wie ich es gelernt habe dann sollte ich a1 überschreiben können und es müsten alle funtion der Alten A Klasse die neue B->a1 anspringen ...
Aufrufe von a1 in der klasse B rufen die überschriebene neue variante auf. Aufrufe aus der basisklasse verwenden selbstverständlich die alte definition. Überschreiben wirkt sich auf die aktuelle und alle abgeleiteten (bis zu einer erneuten überschreibung) klassen aus. Evtl. liegt hier auch eine verwechselung mit virtuellen funktionen vor, wobei da der zugriff auf eine instanz einer abgeleiteten klasse über einen zeiger / eine reference auf eine basisklasse erfolgt. Das wird aber aus der beschreibung nicht ersichtlich.
Ich glaube da sind noch einige lerneinheiten zu c++ nötig!

mr.escape
"The man who trades freedom for security does not deserve nor will he ever receive either." - Benjamin Franklin"Wer seine Freiheit aufgibt, um Sicherheit zu erreichen, wird beides verlieren." - Georg Christoph Lichtenberg
bei Antwort benachrichtigen