class B
{
protected:
int x;
public:
B(int i=28) { x=i; }
virtual B f(B ob) { return x+ob.x+1; }
void afisare(){ cout<<x; }
};
class D: public B
{
public:
D(int i=-32):B(i) {}
B f(B ob) { return x+ob.x-1; }
};
void test6()
{
B *p1=new D, *p2=new B, *p3=new B(p1->f(*p2));
p3->afisare();
}
主要调用函数test6(); 我的问题是,为什么编译器抛出一个错误,3号线,在 INT X声明,与消息:虚拟功能在被保护的变量上触发编译错误
In member function 'virtual B D::f(B)' :
error: 'int B::x' is protected
error: within this context
PS:这个例子是来自考试,因此故障压痕等“泄漏“是故意的。
虽然没有理由造成这个奇怪的缩进,是吗? –