[C++] Typen vererben?

Hallo Programmier-Freaks!

Ich habe eine Frage bezüglich der Ableitung einer Klasse von einer anderen in C++.
Die „Eltern“-Klasse besitzt eine Funktion, welche als
Rückgabetyp den Klassentyp selbst hat.
Wenn ich nun eine Klasse ableite, so erbt sie auch diese
Funktion, nur möchte ich, dass diese Funktion nun als
Rückgabetyp auch den eigenen, also abgeleiteten, Typ besitzt.
Bsp:
class A { A func();}
class B{ B func();}

Wie kann ich das machen, ohne func in B überschreiben zu müssen?
(Die Funtionen sind ausser dem Rückgabetyp identisch)

Vielen dank im Voraus
mw0

Moin,

Die „Eltern“-Klasse besitzt eine Funktion, welche als
Rückgabetyp den Klassentyp selbst hat.
Wenn ich nun eine Klasse ableite, so erbt sie auch diese
Funktion, nur möchte ich, dass diese Funktion nun als
Rückgabetyp auch den eigenen, also abgeleiteten, Typ besitzt.

Die abgeleitete Klasse ist vom Typ der Basisklasse. Du mußt also nichts weiter ändern.

Thorsten

Hi,

Wenn ich nun eine Klasse ableite, so erbt sie auch diese
Funktion, nur möchte ich, dass diese Funktion nun als
Rückgabetyp auch den eigenen, also abgeleiteten, Typ besitzt.

Das geht meines Wissens nicht, da der Compiler sonst in manchen Situationen kein ordentliches Typechecking durchfuehren koennte. Als Notloesung kann in Deinem Fall ein Pointer statt eines Objektes zurueckgegeben (Pointer auf Objekt der Basisklasse). Mit runtime type identification kann der Typ notfalls auch aufgeloest werden (es gibt auch einen Synax, der garantiert, dass das Objekt hinter dem Pointer nicht veraendert werden kann). Eine andere Loesung besteht darin, dass die Funktion eine Referenz (oder Adresse) eines Objekts gleichen Typs erwartet. Statt einen Wert zurueckzugeben, manipuliert die Funktion die Referenz (und so koennen Funktionen auch einfach ueberladen oder neu definiert werden). Die letzte Loesung verwende ich oft, ich weiss allerdings nicht, inwieweit sie Standard (guter Stil) ist.

Gruss

Thorsten