0

因此,如果我有以下超级类:

class Super {
public:
    string member = "bla bla";
    void doSth() { cout << member; }
};

还有一个继承 Super 的 Sub 类:

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

比,当我有一个 Sub 对象时,我无法联系到 Super 的成员,即使他们是公开的。

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 
}

但是,如果它们是公开的,为什么?还是我做错了什么?

4

1 回答 1

4

您是从Super私人继承的。如果不提及继承的访问级别,那是classC++中es的默认值。但是,请注意structs 的默认设置为public

将您的代码更改为

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

然后member将可见

于 2017-07-13T15:04:53.327 回答