无法访问类 'A' 中声明的受保护成员
Cannot access protected member declared in class 'A'
这是我在OOP课程的一个例子中发现的一段代码。当我试图编译它时,我得到了以下错误:
'A::x' : cannot access protected member declared in class 'A'.
由于继承,B难道不能访问A的受保护int吗?
#include<iostream>
using namespace std;
class A
{
protected: int x;
public: A(int i = -16) { x = i; }
virtual A f(A a) { return x + a.x; }
void afisare() { cout << x; }
};
class B : public A
{
public: B(int i = 3) :A(i) {}
A f(A a) { return x + a.x + 1; }
};
int main()
{
A *p1 = new B, *p2 = new A, *p3 = new A(p1->f(*p2));
p3->afisare();
system("Pause");
}
B
可以访问A
的成员x
,但只能访问它继承的成员。它无法访问A
的另一个实例(f
中的a.x
(的成员x
。
相关文章:
- C++:无法访问声明的受保护成员
- 继承和友元函数,从基类访问受保护的成员
- 为什么派生类的好友不能使用受保护的成员?
- C++:为什么无法在派生类中访问受保护的构造函数?
- 公共/私有/受保护是否会更改内存中结构的排列?
- 在父类中公开受保护的构造函数
- 如何从其他结构访问受保护的结构变量
- 在使用受保护和继承时无法访问在类中声明的私有成员
- 如何将超类的受保护成员访问到其派生类. 如果已在派生类中声明了具有相同名称的函数?
- 何时在抽象类 cpp 中声明受保护的字段
- 在派生的C 类中,访问基类受保护成员作为公共的访问声明
- 错误 C2248:无法访问类中声明的受保护成员
- 有什么方法可以在工会内部获得受保护的声明吗
- 继承错误 - 无法实例化抽象类 无法访问在类中声明的受保护成员
- 有没有办法从类外部声明一个受保护C++变量?
- 受保护部分中的好友声明
- 声明受保护的函数friend
- 无法访问类 'A' 中声明的受保护成员
- 不能访问类中声明的受保护成员
- 以前声明为受保护的枚举的访问枚举器