读书人

子类无法访问父类里的保护字段?解决办

发布时间: 2012-06-24 18:32:37 作者: rapoo

子类无法访问父类里的保护字段??
例如:
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成员没有特殊访问权限。

读书人网 >C++

热点推荐