子类无法访问父类里的保护字段??
例如:
class A
{
protected:
int _i;
public:
A(int i):_i(i)
{
}
};
class B:public A
{
public:
B(int i):A(i)
{}
void test2(A* a)
{
//cout<<((B*)a)->_i<<endl;
cout<<a->_i<<endl;
}
};
B类中的test2方法对a->_i的调用,编译器认为B类test2方法不能访问该字段。只有将a强制转换为B类指针以后才可以访问。
原因?
[解决办法]
请参考C++ Prime第四版 P475 15.2.2 protected成员
派生类只能通过派生类对象访问基类的protected成员,派生类对其基类类型对象的protected成员没有特殊访问权限。