私はこのコードを持っています:
#include <iostream>
#include <string>
using namespace std;
class A {
public: void Print(int i) {cout<<i;}
};
class B : public A {
public: void Print(string s) {cout<<s;}
};
int main() {
B bInstance;
bInstance.Print(1);
return 0;
}
これは私にエラーを与えます:
error: invalid conversion from 'int' to 'const char*' [-fpermissive]
つまり、継承されたオーバーロードを考慮せずに B の Print を呼び出そうとしています。ただし、A の Print は B インスタンスから呼び出せる必要があります。実際、呼び出しを次のように変更すると、
bInstance.A::Print(1);
その後、エラーなしでコンパイルされますが、クラススコープ演算子を毎回記述する必要がないようにしたかったのです。基本クラスの関数のオーバーロードを呼び出そうとしていることをコンパイラに伝える方法はありますか?