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;
} 展开
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;
} 展开
4个回答
展开全部
这个可以理解为,私有成员 和 公有成员 是不可被继承的(非友元类)
虽然可以这么理解,但是不能确定,因这这个问题是有争议的:
有人说可继承:
因为你用sizeof看继承后的空间大小,的确为父类的私有成员分配了内存
有人说不可继承:
因为父类的私有成员和保护成员,其子类是不见的,不可访问的
虽然可以这么理解,但是不能确定,因这这个问题是有争议的:
有人说可继承:
因为你用sizeof看继承后的空间大小,的确为父类的私有成员分配了内存
有人说不可继承:
因为父类的私有成员和保护成员,其子类是不见的,不可访问的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
提示告诉你,不能访问class 'One'中受保护的成员变量"a"
把a的申明为public噻
把a的申明为public噻
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2010-01-06
展开全部
Protected 改成private
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
私有继承怎么继承Protected的成员呢
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询