2015-09-03 115 views
0

这是我在OOP课程的示例中找到的一段代码。当我尝试编译我收到以下错误:无法访问在'A'类中声明的受保护成员

'A::x' : cannot access protected member declared in class 'A'. 

因为继承的,应该不是B能够访问A的保护的诠释?

#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"); 
} 

回答

6

B可以访问A的成员x但只有它继承了一个。它不能访问另一个A实例(a.x,在f)的成员x

相关问题