有没有办法直接公开私有父类的某些方法。 在下面的例子中,如果我有一个Child类型的对象,我希望能够直接调用其父类的方法a(),而不是b(); 当前的解决方案会产生大量样板代码,尤其是在存在大量参数的情况下。
class Parent {
public:
void a(int p1, double p2, int p3, std::vector <int> &p4);
void b();
};
class Child : private Parent {
public:
void a(int p1, double p2, int p3, std::vector <int> &p4) {
Parent::a(p1, p2, p3, p4);
}
};
答案 0 :(得分:12)
您可以使用使用声明。
class Child : private Parent {
public:
using Parent::a;
};
答案 1 :(得分:3)
这可能会有所帮助:http://www.parashift.com/c++-faq-lite/private-inheritance.html#faq-24.6
class Child : protected Parent
{
public:
using Parent::a;
}
修改:已添加public
。