• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C++基底クラスに戻り値の異なる関数が宣言されている場合)

C++基底クラスの戻り値の異なる関数の宣言について

このQ&Aのポイント
  • C++の基底クラスに戻り値の異なる関数が宣言されている場合、エラーが発生することがあります。
  • 関数の名前と引数が同じで戻り値だけが異なる場合はエラーが出るため、基底クラスの変更が不可能な場合はどのように回避するか悩むことがあります。
  • このエラーを回避するための方法としては、仮想関数のオーバーライドを行わない代わりに、新しい関数を追加することが一つの解決策となります。

質問者が選んだベストアンサー

  • ベストアンサー
  • oldman50
  • ベストアンサー率29% (8/27)
回答No.1

 二つの抽象クラスを多重継承し、かつそれらの同名の純粋仮想関数をオーバーライドすることについて、オブジェクト指向的にどのような意味があるのか不明ですが、単にコンパイルを通したいだけであれば、スコープ解決演算子を使用する方法が考えられます。 class Base1 {  public:   virtual int get() = 0; }; class Base2 {  public:   virtual float get() = 0; }; class Ex: public Base1, public Base2 {  public:   int get(int ) {     Base1::get();     return 0;  }  float get(float ) {     Base2::get();     return 0.0f;  } }; int main() { }

0xEF
質問者

お礼

回答ありがとうございます。 上記の方法でコードを書いてみたところ、確かにコンパイルは通るのですが実態化することができませんでした。 しかし、 >>二つの抽象クラスを多重継承し、かつそれらの同名の純粋仮想関数をオーバーライドすることについて、オブジェクト指向的にどのような意味があるのか不明ですが という発言を受けて少し考えてみて、現在の自分の設計のしかたのまずいところが見つかった気がします。 ありがとうございました。

すると、全ての回答が全文表示されます。

関連するQ&A