无法使用子类变量访问超类公共成员
Can't acces super class public members with sub class variable
所以如果我有以下类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++ 中继承私有数据成员?但通过超类的公共方法访问
- 在子类函数中访问超类友元的受保护数据成员
- 访问超类实例的受保护成员
- 成员初始值设定项"超类"不命名非静态数据成员或基类
- 给超类的非常量成员初始值?(C++)
- 成员是否继承自超类的超类
- 模板超类的静态成员定义
- 通过C++中的子类访问超类的受保护静态成员
- 有关隐藏超类成员的问题
- 覆盖超类成员
- 当两个超类具有具有相同名称但签名不同的成员函数时,不明确
- 访问超类类型成员对象的受保护成员 - 一个优雅的解决方案
- 模板化超类的受保护成员应该在子类中可见,但(有时)不可见
- 如何在c++中扩展和使用超类的成员
- c++超类为子类定义静态成员变量
- 超类的成员函数可以访问子类的成员功能吗?如何
- 如何从具有不同构造函数的超类访问子类的成员