これは恐らく問題ではありません。私は最近、C++や関数のオーバーロードや継承の高水準なものを混乱させようとすると、奇妙な問題に直面しました。継承されたクラスで関数のオーバーロードが発生するC++の問題
ここでは、問題を示すための簡単な例を示します。
classA
とclassB
の2つのクラスがあります。
class classA{
public:
void func(char[]){};
};
class classB:public classA{
public:
void func(int){};
};
私はclassB
は今が異なるため、引数にオーバーロードされた2つのfunc(..)
機能を保有すべきである知っていることによります。
しかし、これをメインの方法で試してみると、
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
INT見えません。
どうすればこの問題を解決できますか? C++でオーバーロードがどのように機能するのでしょうか?私はC++の新機能ですが、Javaではこのようなものを利用することができます。
私は既にthis threadが類似の問題について質問していますが、私は2つのケースが異なっていると思います。
感謝をオーバーロードされている
BCSで、int型の引数を渡す必要があります。私はC++の人々が意図的にこのことをしていたのだろうかと思います。任意のプロはありますか?私には相続の考えを台無しにする気がするのですか? – Anubis
@Anubis、それは過負荷解決のルールと一般的な 'using'宣言の目的の問題です。 – chris