是否有任何简单的方法来公开私有父类c ++的方法

时间:2010-02-28 16:02:54

标签: c++

有没有办法直接公开私有父类的某些方法。 在下面的例子中,如果我有一个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);
            }
   };

2 个答案:

答案 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