无法使用子类变量访问超类​​公共成员

时间:2017-07-13 15:02:24

标签: c++ subclass superclass public-members

所以,如果我有以下课程超级:

class Sub : Super {
public:
    string member2 = "bla bla 2";
};

继承Super的类Sub:

using namespace std;
int main(){
    Sub sub;
    cout << sub.member2 << endl;
    cout << sub.member << endl; // error: public Super::member is inaccessible 
    sub.doSth(); // error: public Super::doSth() is inaccessible 
}

当我有一个Sub对象时,我甚至无法联系Super的成员,甚至认为他们是公开的。

sudo a2enmod rewrite

但是为什么他们是公开的呢?或者我做错了什么?

1 个答案:

答案 0 :(得分:4)

您私下继承Super。如果您没有提到继承的访问级别,那么这是C ++中class es的默认值。但请注意,struct的默认设置为public

将您的代码更改为

class Sub : public Super {
public:
    string member2 = "bla bla 2";
};

然后member将可见