Sca*_*ass 0 c++ subclass superclass public-members
因此,如果我有以下 Super 类:
class Super {
public:
string member = "bla bla";
void doSth() { cout << member; }
};
Run Code Online (Sandbox Code Playgroud)
还有一个继承 Super 的 Sub 类:
class Sub : Super {
public:
string member2 = "bla bla 2";
};
Run Code Online (Sandbox Code Playgroud)
然后,当我有一个 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
}
Run Code Online (Sandbox Code Playgroud)
但为什么如果它们是公开的呢?或者我做错了什么?
您是从Super私人那里继承的。如果您不提及继承的访问级别,则这是classC++ 中 es 的默认访问级别。但是,请注意structs 的默认设置为public。
将您的代码更改为
class Sub : public Super {
public:
string member2 = "bla bla 2";
};
Run Code Online (Sandbox Code Playgroud)
然后就member可以看到了