我们有:
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)
现在隐藏在 中class 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
关键字,但它不区分具有相同名称和不同签名的方法。