Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge

nochmal c++

michi_p / 1 Antworten / Flachansicht Nickles

Hallo,


iene weitere Frage:


ich habe eine rein virtuelle Basisklasse A. Diese Klasse A besitzt eine (rein virt.) Funktion mit Rückgabewert Zeiger auf A: A*. (zB virtual A* getPtr(); )
Bei der abgeleiteten Klasse B:A müßte also demnach der Rückgabewert B* sein.
Die implementierung in B habe ich dann so gemacht:


A* B::B getPtr(){
...
return (etwas vom Typ *B);
}


Der Compiler will aber jetzt verständlicherweise einen Rückgabewert vom Typ *A haben und meldet mir den Fehler, daß er *B nicht in *A konvertieren kann.

Weiß jemand wie die Implementierung aussehen muß? An der Basisklasse soll nichts mehr verändert werden.


Danke Micha

bei Antwort benachrichtigen
thomas woelfer michi_p „nochmal c++“
Optionen

wenn du die virtuelle methode

virtual A* GetPtrToA();

ueberladen willst, dann muss die signatur der funktion die gleiche sein. das heist, auch in der abgeleiteten klasse b muss es sich um eine funktoin mit dem gleichen prototyp handeln.

davon ab: wenn 'B' von 'A' richtig abgeleitet ist, dann kann ein zeiger auf 'B' auch als zeiger auf 'A' verwendet werden.

WM_FYI

this posting contains no tpyos.
bei Antwort benachrichtigen