【问题标题】:Can't acces super class public members with sub class variable无法使用子类变量访问超类​​公共成员
【发布时间】:2017-07-13 15:02:24
【问题描述】:

所以,如果我有以下超级类:

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 
}

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

【问题讨论】:

标签: c++ subclass superclass public-members


【解决方案1】:

您是从Super 私下继承的。如果你没有提到继承的访问级别,那是 C++ 中classes 的默认值。但是,请注意 structs 的默认设置为 public

将您的代码更改为

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

然后member 将可见

【讨论】:

  • mkay,为类和结构(不仅仅是类)命名会很酷,这样可以避免对类与结构的一些混淆
猜你喜欢
  • 1970-01-01
  • 2012-10-06
  • 1970-01-01
  • 1970-01-01
  • 2012-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-27
相关资源
最近更新 更多