C++ 无法访问private 成员

//.CPP#include<iostream>#include<vector>#include"student.h"usingstd::cout;usingstd::e... //.CPP
#include<iostream>
#include<vector>
#include"student.h"
using std::cout;
using std::endl;
using std::cin;
using std::vector;

extern student input_student();

int main() {
vector<student> students;
student temp("",0,0);
for(int i = 0; i < 5; ++i) {
input_student(temp);
students.push_back(temp);
}
for(vector<student>::iterator itr = students.begin();
itr != students.end(); ++itr)
(*itr).show();
return 0;
}

student input_student(student &stu){
cout<<"Input the student's data:"<<endl;
cout<<"name:";
cin>>stu.name;
cin.clear();
cout<<"age:";
cin>>stu.age;
cin.clear();
cout<<"test score:";
cin>>stu.test_score;
cin.clear();
cout<<"Input finish. ";
return stu;
}
//.H
#include<iostream>
#include<string>
using std::cout;
using std::endl;
using std::cin;
using std::string;
class student {
student set(string, int, int);//给三个属性赋值
int get() const; //获得成绩
student show();
student(string, int, int) {};//这三个变量name有默认构造函数,age和test_score默认初始化为0
string get_name() {return name;}
int get_age() {return age;}
int get_score() {return test_score;}
private:
string name;
int age;
int test_score;
};

student student::set(string tname, int tage, int tscore) {
name = tname;
age = tage;
test_score = tscore;
return *this;
}

int student::get() const{
return test_score;
}

student student::show(){
cout<<name<<" "<<age<<" "<<test_score<<endl;
return *this;
}
/*先不管别的错误,第一个提示错误是: error C2248: “student::student”: 无法访问 private 成员(在“student”类中声明)。我就奇了怪了,我定义类的时候又没有继承哪个类,定义出来一编译为什么是student::student?这货到底错哪了啊?*/
展开
 我来答
jordansj
2011-05-10 · 超过17用户采纳过TA的回答
知道答主
回答量:34
采纳率:0%
帮助的人:34万
展开全部
你的函数全部都没写public 属性
c++里类默认的访问属性是private的
并且在你的input_student函数里 直接就访问了student的私有成员,不出错才怪。
成员是私有的,那你就得定义对应的公有访问/修改函数。
只有类里的成员函数才能访问private的成员。
对象是类的一个实例,是属于类的外部了,这样直接访问私有成员肯定是错的
Storm代理
2023-08-29 广告
"StormProxies是全球大数据IP资源服务商,其住宅代理网络由真实的家庭住宅IP组成,可为企业或个人提供满足各种场景的代理产品。点击免费测试(注册即送1G流量)StormProxies有哪些优势?1、IP+端口提取形式,不限带宽,I... 点击进入详情页
本回答由Storm代理提供
第五维行者
2011-05-10 · TA获得超过116个赞
知道小有建树答主
回答量:133
采纳率:0%
帮助的人:102万
展开全部
只有同一个类class中的 public类型的成员函数 才能访问 类中private类型成员变量。记住这一点永远不会出错。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
悲欢归去来3425
推荐于2017-11-24 · TA获得超过364个赞
知道小有建树答主
回答量:412
采纳率:0%
帮助的人:327万
展开全部
在类里面默认的是private。必须显示指定为public 看一下的代码
class student {
public:
student set(string, int, int);//给三个属性赋值
int get() const; //获得成绩
student show();
student(string, int, int) {};//这三个变量name有默认构造函数,age和test_score默认初始化为0
string get_name() {return name;}
int get_age() {return age;}
int get_score() {return test_score;}
private:
string name;
int age;
int test_score;
};
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhanfeng1987
2011-05-10 · 超过34用户采纳过TA的回答
知道答主
回答量:202
采纳率:0%
帮助的人:110万
展开全部
class student {
student set(string, int, int);//给三个属性赋值
int get() const; //获得成绩
student show();
student(string, int, int)
追问
我把构造函数放前面也提示通不过,未必这个类的函数不能返回这个类的对象?
追答
这个,我只能告诉你,我其实已经忘了c++了
刚刚这个只是感觉,具体的,那啥,你还是问问你的c++老师吧,相信他非常愿意有学生好问好学。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式