c++ - 无法使用子类变量访问父类(super class)​​公共(public)成员

标签 c++ subclass superclass public-members

所以如果我有一个 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++ 中 classes 的默认访问级别。但是,请注意 struct 的默认设置为 public

将您的代码更改为

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

然后 member 将可见

关于c++ - 无法使用子类变量访问父类(super class)​​公共(public)成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45084479/

相关文章:

java - ANTLR @header、@parser、superClass 选项和基本文件 io (Java)

c# - 一个列表中具有更多不同类型的对象

java - 子类和父类(super class)中的同名变量

c++ - 了解将结构转换为 void 指针

c++ - 函数调用运算符

Java 继承 : should an extension of a class inherit the class?

mysql - 与父存储库 Symfony 中的子类左连接

java - 在父类(super class)中使用子类的方法

c++ - Xbox360 模拟摇杆角度 SDL

c++ - 模板化派生类通过CRTP类继承,获取基类成员对象