读书人

请问一个有关继承的变量访问权限的有关

发布时间: 2012-07-15 20:20:06 作者: rapoo

请教一个有关继承的变量访问权限的问题
class A
{
protected:
int n;
};

class B : public A
{
public:
int m;
B& operator= (const A& a)
{
n = a.n; //错误,cannot access protected member declared in class 'A'
}
B& operator= (const B& b)
{
n = b.n;//正确
}
};

为什么一处错误而另一处正确呢

[解决办法]
参见C++ primer p475.
派生类只能通过派生类对象访问其基类的protected成员,派生类对其基类类型对象的protected成员没有特殊访问权限。
[解决办法]
把B声明为A的友元。
[解决办法]
楼主,换本合格的教材吧。
C++就这么规定的,不能访问基类独立对象(引用)的保护数据。

读书人网 >C++

热点推荐