私有扩展后,C ++将变量公开为变量

时间:2015-02-09 17:50:13

标签: c++ inheritance private

怀疑是如标题所述:

使用以下课程:

class A
{
public:
    int a;
    int b;
    int c;

    function1();
    function2();
}

和B类扩展A,如何将所有变量从A变为公?

class B : private A
{
public:
    int a; //How to turn this public from A
    int b; //How to turn this public from A
    int c; //How to turn this public from A
}

4 个答案:

答案 0 :(得分:7)

将公共数据和私有基类的成员公开为派生类中的公共数据是一个坏主意。但是,如果必须,您可以使用:

class B : private A
{
   public:
      using A::a;
      using A::b;
      using A::c;
};

答案 1 :(得分:2)

请勿在{{1​​}}中重新声明它们。

示例:

B

答案 2 :(得分:0)

使用其他选项进行继承

  class B: public A

阅读此Difference between private, public, and protected inheritance

答案 3 :(得分:-1)

我认为你可以做到

class B : private A
{
public:
    int A::a; 
    int A::b; 
    int A::c; 
}

虽然,我从未尝试过;