【发布时间】:2013-05-29 21:28:49
【问题描述】:
我们有:
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关键字,但它不区分同名不同签名的方法。
【问题讨论】:
-
否 - 如果您需要指定特定签名,您的解决方案可以替代使用毯子。
标签: c++ class inheritance using access-specifier