受保护的成员在派生类中不可访问
protected members are not accessible in derived classes
为什么基类中的受保护成员在派生类中无法访问?
class ClassA
{
public:
int publicmemberA;
protected:
int protectedmemberA;
private:
int privatememberA;
ClassA();
};
class ClassB : public ClassA
{
};
int main ()
{
ClassB b;
b.protectedmemberA; // this says it is not accesible, violation?
//.....
}
您可以在
b
中访问protectedmemberA
。您正在尝试从外部访问它。它与继承无关。
发生这种情况的原因与以下原因相同:
class B
{
protected:
int x;
};
//...
B b;
b.x = 0; //also illegal
因为受保护的成员仅在类 B 的作用域内可见。因此,您可以在此处访问它,例如:
class ClassB : public ClassA
{
void foo() { std::cout << protectedMember;}
};
但表达式如
someInstance.someMember;
要求someMember
是公开的。
这里和这里一些相关的SO问题。
您只能从B
(或A
)范围内访问protectedmemberA
- 您正在尝试从main()
相关文章:
- 如何使用 C++ 中的继承函数访问派生类中的局部变量
- 按基类对象访问派生类资源时出错
- C++11: 如何访问派生类中的基类成员?
- 访问派生类的 QMetaObject
- 使用基类对象访问派生的仅类方法
- 如何在 c++ 中通过基类引用访问派生类的对象?
- 如何在 c++ 中使用多态性访问派生类字段?
- C++继承从基类指针访问派生类中的非虚拟函数
- 无法访问派生类中的基类方法
- 如果基类指针无法访问派生类成员函数,那么多态性有什么方便的呢?
- 如果我们有一个基*类,如何访问派生模板类的成员函数
- 为什么我无法使用受保护/私有继承访问派生实例中基类的受保护成员?
- 通过在基类中虚拟调用派生类中的函数来访问派生类中的函数
- 无法访问派生类函数内的基类的受保护数据成员
- D 指针/pimpl 模式基类指针访问派生类成员
- 友元类对象是否可以在其成员函数中访问派生类对象的基类私有成员?
- 访问派生类C++中的受保护成员
- 从C++中的"interface"访问派生类成员?
- 通过基类的指针,我们无法访问派生类特定的成员
- 抽象类的需求是什么?为什么要通过其基类访问派生类方法?在C++