c++创建一个对象数组,对象为学生,元素包括学号,姓名,成绩,按成绩从小到大输出,错哪里了!

 我来答
匿名用户
推荐于2017-12-16
展开全部
你这已经不是错误了,你似乎没有明白类和对象的关系。
先说一下你这个为什么错误:你sort函数中 Student students[3];这里声明,并定义了一个Student类型的数组,注意,这里是声明并且定义了,就是说这里是要分配空间的,就会调用类的默认构造方法构造三个具体的对象。
但是你类中只有Student(int,string,double)这种带参数的构造函数,那么就不会生成默认的无参构造函数,所以就报错了。
你main函数中下列表初始化Student students[3] = {.....},这种就不会报错。

在说明一下,你student[3].sore()。这根本不是对students[3]这三个对象排序。就算你在类中添加了默认无参构造函数让上面你那一行不出错,在这里也会报错的,这里数组超出边界。

student[3].sore();这句话的意思是,对students数组的第四个对象(并不存在),调用它的成员方法sort。然后再sort中又构造了三个Student对象(与main要排序的三个对象没半毛钱关系)进行排序。
追问
那应该怎样做啊!?马上要交作业了!!!
追答
传递指针啊,
你sort函数 static void sort(Student* stus, int num){
这里面把 stus 当成数组也可以额 stus[0].......stus[1].....
注意数组大小是num就可以了。
}
由于c++中没有数组这种类型,通常看作指针,这个函数后 num表示数组的大小。
这里建议做static 静态函数。

你main函数中,
Student students[3] = {xxxxxxxxx};
Student::sort(students,3);这样就可以条用了。你sort也可以做成全局函数。

当然如果你硬要做成成员函数,也不是不可以,这样不便于理解。
student[0].sort(students,3);//这样写着看着别扭。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式