所以如果我有一个 super 类:
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
}
但如果它们是公开的,为什么呢?还是我做错了什么?
最佳答案
您正在私下继承Super
。如果您没有提及继承的访问级别,那是 C++ 中 class
es 的默认访问级别。但是,请注意 struct
的默认设置为 public
。
将您的代码更改为
class Sub : public Super {
public:
string member2 = "bla bla 2";
};
然后 member
将可见
关于c++ - 无法使用子类变量访问父类(super class)公共(public)成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45084479/