Überladung von virtuellen Methoden
-
Moin zusammen,
ich habe da eine Frage :).Ich habe ein "Interface"
class ITest { virtual void set( int value ) = 0; virtual void set( float value) = 0; virtual int get() = 0; virtual float get() = 0; };Davon wird geerbt und die Methoden überschrieben.
Mit den set Methoden gibts keine Probleme. Die get Methoden werden allerdings als redefinition bzw. Mehrfache Deklaration bemängelt.
Ist in solchen Fällen eine Überladung nicht möglich?
Beste Grüße
-
ProblemeProbleme schrieb:
Ist in solchen Fällen eine Überladung nicht möglich?
Richtig, der Rückgabetyp ist kein Kriterium für die Unterscheidung von Überladungen. Was sollte denn auch passieren, wenn jemand deinTest.get() aufruft und den Rückgabewert nicht verwendet?

-
Der Rückgabetyp gehört nicht zur Signatur einer Funktion. Darum kann man aufgrund unterschiedlicher Rückgabetypen nicht überladen.
-
Hmja , wohl war.
Hab bisher viel Template Code verwendetvoid getValue<int>()... usw.
Das geht halt bei den abtrakten Methoden nicht. Habs verpeilt.
Danke.
-
Nein, das geht allgemein nicht, nicht nur bei virtuellen Methoden, sondern bei allen Funktionen. Templatefunktionen bilden insofern eine Art Ausnahme, weil das Templateargument mit zum Funktionsnamen gehört und daher klar ist, welches get man meint.