首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2012-06-24 
子类无法访问父类里的保护字段??例如:class A{protected:int _ipublic:A(int i):_i(i){}}class B:public

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

热点排行