これはおそらく初心者の質問です、それについては申し訳ありません。最近、C ++の高レベルのもの、関数のオーバーロード、継承をいじろうとしたときに、奇妙な問題に直面しました。
問題を説明するために、簡単な例を示します。
以下のように、 2つのクラスがありclassA
ますclassB
。
class classA{
public:
void func(char[]){};
};
class classB:public classA{
public:
void func(int){};
};
私が知っていることによると、異なる引数のためにオーバーロードされた2つの関数を持っているclassB
はずです。func(..)
しかし、これをmainメソッドで試すと、
int main(){
int a;
char b[20];
classB objB;
objB.func(a); //this one is fine
objB.func(b); //here's the problem!
return 0;
}
void func(char[]){};
スーパークラスにあるメソッドclassA
が派生クラスに表示されないため、エラーが発生しclassB
ます。
どうすればこれを克服できますか?これは、C ++でのオーバーロードの仕組みではありませんか?私はc++を初めて使用しますが、Javaでは、このようなものを利用できることを知っています。
同様の問題について尋ねるこのスレッドをすでに見つけましたが、2つのケースは異なると思います。