class Base
{
public:
virtual void f(int)
{
printf("Base f(int)\n");
}
virtual void f(int, int)
{
printf("Base f(int, int)\n");
}
};
class Der : public Base
{
public:
using Base::f;
virtual void f(double)
{
printf("Der f(double)\n");
}
};
この場合、基本クラスの両方の関数を使用することができます。しかし、派生クラスで、ベースから特定のオーバーロードされたメソッドのみを使用できるようにすることは可能ですか?たとえば、f(int)のみを使用できますが、f(int、int)は使用できません。派生クラス内の基底クラスと同じ名前と異なる署名を持つ関数を再表示する
クラスは、名前空間ではありませんusingディレクティブは名前空間に使用するためのものです。 –
@izomorphius基底クラスから派生クラスに名前を持ってくるときは、絶対に問題ありません。 –
@izomorphius:いいえ、この場合はusingディレクティブが必要です。それ以外の場合、Der :: f(double)はBase :: f(int)をシャドウします。 – Tobias