c++改错 提示说cannot access protected member declared in class 'One'

#include<iostream>usingnamespacestd;classOne{protected:inta;public:voidsetOne(intx){a... #include<iostream>
using namespace std;
class One{
protected:
int a;
public:
void setOne(int x) {a=x;}
void showOne() {cout<<"a="<<a<<endl;}
};
class Two:private One{
public:
void setTwo(int x) {a=x;}
};
void main()
{ Two obj;
obj.setTwo(10);
cout<<"obj.a="<<obj.a<<endl;
}
展开
 我来答
xiaohuh421
2010-01-06 · TA获得超过904个赞
知道小有建树答主
回答量:897
采纳率:0%
帮助的人:381万
展开全部
这个可以理解为,私有成员 和 公有成员 是不可被继承的(非友元类)

虽然可以这么理解,但是不能确定,因这这个问题是有争议的:

有人说可继承:
因为你用sizeof看继承后的空间大小,的确为父类的私有成员分配了内存
有人说不可继承:
因为父类的私有成员和保护成员,其子类是不见的,不可访问的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
geqitx
推荐于2018-05-14
知道答主
回答量:23
采纳率:0%
帮助的人:11万
展开全部
提示告诉你,不能访问class 'One'中受保护的成员变量"a"
把a的申明为public噻
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2010-01-06
展开全部
Protected 改成private
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lcg1986
2010-01-06 · TA获得超过3374个赞
知道大有可为答主
回答量:1858
采纳率:90%
帮助的人:1624万
展开全部
私有继承怎么继承Protected的成员呢
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式