![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
こんにちは。
質問させてください。
以下のようなコードがあったとします。
class Base1
{
public:
virtual int get()=0;
};
class Base2
{
public:
virtual float get()=0;
};
class Ex : public Base1, public Base2
{
public:
int get(){return 0;}
float get(){return 0.0f;}
};
void main()
{
}
このプログラムをコンパイルすると
「'Ex::get': オーバーライドする仮想関数の戻り値の型が異なり、'Base1::get' の covariant ではありません。」
というエラーが出てしまいます。
関数の名前と引数が同じで戻り値だけが異なる場合はエラーが出るのはわかるのですが、基底クラスのBase1、Base2は変更不可能だとするとどのように回避すればいいのでしょうか?
よろしくお願いします。
/*
WindowsXP Professional SP3
VisualStudio2005 AcademicEdition
*/
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()
{
}
回答ありがとうございます。
上記の方法でコードを書いてみたところ、確かにコンパイルは通るのですが実態化することができませんでした。
しかし、
>>二つの抽象クラスを多重継承し、かつそれらの同名の純粋仮想関数をオーバーライドすることについて、オブジェクト指向的にどのような意味があるのか不明ですが
という発言を受けて少し考えてみて、現在の自分の設計のしかたのまずいところが見つかった気がします。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# 10個の実数に対する降順ソート結果を出力するプログラムを作りたいのですが、以下のプログラムをどう直せ 1 2022/07/09 22:16
- Java Java プログラム public class Main { public static void 3 2023/08/10 23:46
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- Java JavaのSingletonパターンのprivateの持つ意味が分かりません。 5 2022/06/12 10:38
- Java 直し方について教えて頂きたいです。 4 2022/08/13 02:11
- Ruby No route matches [GET] "/posts/5/destroy" 1 2022/03/24 13:00
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- Java java final 1 2022/06/10 22:49
- C言語・C++・C# C++プログラミングコードにポリモーフィズムを取り入れ方を教えてください。 2 2023/06/09 11:17
- Java java 引数 戻り値のあるメソッド 3 2023/02/12 06:23
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C#で、あるクラスのメンバーす...
-
大量のデータを読み込んで表示...
-
java のstruts1.3です。
-
typeid演算子を使用すると警告...
-
エンターキーを押すとOKボタン...
-
ボタンのイベントで異なるウィ...
-
ボタンの複数割り当てについて
-
C#でキーイベントが発生しない...
-
C# 矢印キーの取得
-
書式の設定
-
シリアル通信で受信したデータ...
-
C#でのWNetAddConnection3の使...
-
androidプログラミングについて...
-
C#単体テストで、UnitTestの使...
-
C言語のポインターに関する警告
-
ループ処理の際、最後だけ","を...
-
[JAVA]try 内の変数を外で!?
-
JSPやサーブレットでSystem.out...
-
VBAで配列の計算
-
javaで質問です。 文字列2023/2...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C#で、あるクラスのメンバーす...
-
大量のデータを読み込んで表示...
-
Junitテストでvoid戻り値メッソ...
-
Processingでマウスクリックで...
-
C#でのWNetAddConnection3の使...
-
ボタンのイベントで異なるウィ...
-
C#で別のFormへ複数の値を返そ...
-
GetDIBits関数の使い方について
-
【Java】画像表示が出来ない!
-
ボタンの複数割り当てについて
-
Thread.sleepのInterruptedExce...
-
C# MouseHoverを何度も呼ぶには
-
C# DataGridView列カスタマイズ
-
正規表現
-
unityでのC++エラーの原因がわ...
-
C# visibleプロパティをfalseに...
-
C# 矢印キーの取得
-
C#から、C++で作成したdll内の...
-
C#でキーイベントが発生しない...
-
JavaFXでの表内のチェックボッ...
おすすめ情報