Vererbungskonzept



  • Hallo,

    ich habe eine Basisklasse A, deren Methoden Pointer auf A zurückgeben. Diese Möchte ich nun erweitern und schreibe darum eine Klasse B, die private von A erbt. Die Methoden implementiere ich nun so, dass sie Pointer auf B zurückgeben. Aber wie bekomme ich die Rückgabewerte der A-Methoden auf B-Pointer umgebogen? Mit Casting klappt das leider nicht und mir gehen langsam die Ideen aus.

    Gurß, Heimchen

    PS: bei A handelt es sich um rapidxml::xml_node.



  • Das geht nicht. Wenn du ein A-Objekt hast, dann ist es ein A-Objekt und kein B-Objekt. Da hilft auch Polymorphie nicht weiter, da A ja gar nicht weiß, dass B existiert und echte A-Objekte zurück gibt und keine B-Objekte die auch As sind.



  • Ich denke nicht, dass das rapidxml-Design es vorsieht, dass Leute irgendwas von xml_node ableiten. Klingt so, als würdest du da die Bibliothek falsch verwenden wollen. Wenn dir da irgendwas nicht dran passt, dann ändere sie doch direkt. Ist ja schließlich nur eine Headerdatei, die man editieren darf.



  • Hi,

    habs nun anders gelöst. Ist zwar nicht so ganz schön, aber es tut, was es soll. Meine Klassen haben nun die entsprechenden rapidxml Elemente als private member. Zwar muss ich alle Member-Funktionen damit neu Umsetzen, kann aber zusätzliche Abfragen z.B. auf NULL-Pointer einbauen.


Anmelden zum Antworten