1
みなさんこんにちは皆さんは、オーバーロードとオーバーライドが何らかの形で行われている次のC++コードについて困惑しています。ここでC++でのオーバーライドとオーバーロードの同時実行
は私のコンパイラが与えるエラーです(コード内部MINGW32-G ++ ::ブロック13.12)
error: no matching function for call to 'Derived::show()'
note: candidate is:
note: void Derived::show(int)
note: candidate expects 1 argument, 0 provided
ここではそれらを生産するコードです。
#include <iostream>
using namespace std;
class Base{
public:
void show(int x){
cout<<"Method show in base class."<<endl;
}
void show(){
cout<<"Overloaded method show in base class."<<endl;
}
};
class Derived:public Base{
public:
void show(int x){
cout<<"Method show in derived class."<<endl;
}
};
int main(){
Derived d;
d.show();
}
私はBase :: show()を仮想として宣言しようとしました。それから、Base :: show(int)で同じことを試しました。どちらもうまくいきません。
"隠蔽ルール"を参照してください。あなたのコンパイラは、必要とされていることをやっています。 – Peter