005
27.04.2007, 16:10 Uhr
~barnadani
Gast
|
Auch wenn es virtual ist: muss die Funktion, die die Alte uberschreibt, nicht dasselbe return-type haben? A::f(int) gibt A& zuruck, B::f(int) [die A::f(int) uberschreibt] gibt B& zuruck.
Aha, vielleicht etwas gefunden:
C++: |
class A { public: virtual A &f(int i) { cerr<<"A::f("<<i<<")"<<endl; return *this; } };
class B : public A { public: double f(int i) { cerr<<"B::f("<<i<<")"<<endl; return 1.0; } void extra() { cerr<<"B::extra()"<<endl; } };
|
Dieses Kode kompiliert nicht mehr:
Zitat: |
proba.C:13: error: conflicting return type specified for ‘virtual double B::f(int)’ proba.C:7: error: overriding ‘virtual A& A::f(int)’
|
Also das return-type muss nicht dasselbe sein, aber ahnlich (A& und B& sind 'ahnlich', da B von A stammt) |