Possible Duplicate:
c++ virtual function return type異なる戻り値
私はここで、シンプルだが紛らわしい質問があります。オーバーライドされたメソッドの戻り値の型が、基本クラスで定義されているabstactの戻り値の型と異なるのは合法ですか?私はそれをし、コンパイラは不平を言わなかった...誰か説明してもらえますか?
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;
}
全く似たような(MSVCウントのMinGWを)受け入れコンパイラ...誰もが、これは合法であるどの程度にexaplainしてくださいだろうか?
サブクラスでdoubleを使用している場合、基本クラスにint値があるのはなぜですか? – dexametason
GCC 4.6.1がエラーになりました:エラー: 'virtual double MyClass :: getValue()'に指定されている競合する戻り値のタイプ – enobayram
実際に私のプログラムではintとdoubleではありません。これは2倍で、3つのコンポーネントを持つMathVectorです。基本クラスはスカラ信号を生成し、派生クラスは3D信号を生成します。 –