2

我々は持っています:

class A {
public:
    int f();
    int f(int);
  //...
};
class B {
public:
    int f();
    int f(int);
  //...
};
class AB : public A, public B {
public:
    long f(double, double);
  //...
};

A::f()A::f(int)B::f()は にB::f(int)隠されています。隠されていなかったかのようにandclass ABのみを使用したい:A::f()B::f(int)

AB ab;
ab.f();  // ab.A::f()
ab.f(1); // ab.B::f(1)

次のコードを書くよりも簡単にこれを達成する方法はありますか?

class AB : public A, public B {
public:
  //...
    int f() {return A::f();}
    int f(int x) {return B::f(x);}
};

キーワードを考えusingましたが、同じ名前で異なる署名を持つメソッドを区別しません。

4

1 に答える 1