Possible Duplicate:
c++ virtual function return typeUnterschiedlicher Rückgabewert einer überschriebenen Klasse
Ich habe eine einfache, aber verwirrend Frage hier. Ist es legal, einen anderen Rückgabewerttyp für überschriebene Methoden zu haben als die in der Basisklasse definierten abstact? Ich habe das getan und der Compiler hat sich nicht beschwert ... könnte jemand bitte erklären?
class MyBaseClass
{
int value;
public:
virtual int getValue() = 0;
};
class MyClass : public MyBaseClass
{
double value;
public:
virtual double getValue(); // here!!! return is double, not int
};
double MyClass::getValue()
{
return this->value;
}
Der Compiler völlig etwas ähnliches (MSVC und MinGW) akzeptiert ... könnte jemand bitte exaplain in welchem Umfang dies legal ist?
Warum hat Ihre Basisklasse int-Wert, wenn Ihre Unterklasse ein double verwendet? – dexametason
GCC 4.6.1 beschwert: Fehler: widersprüchlicher Rückgabetyp für 'virtuelles Doppel MyClass :: getValue()' – enobayram
Eigentlich in meinem Programm ist es nicht int und double. Es ist doppelt und MathVector mit 3 Komponenten. Die Basisklasse erzeugt ein skalares Signal und die abgeleitete Klasse erzeugt ein 3D-Signal. –