请教一个有关继承的变量访问权限的问题
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++就这么规定的,不能访问基类独立对象(引用)的保护数据。