哪位人能帮我一下 这个问题的编译不了 问题在哪里 高手进来下

来源:百度知道 编辑:UC知道 时间:2024/09/28 08:25:57
这个编译不通过的问题出在哪一步??
#include<iostream>
using namespace std;
class Student//声明一个类
{
public://类的公共部分
Student(int n,float s):num(n),score(s){}
float getscore();//声明
private://类的私有部分
int num;
float score;
};
float Student::getscore()//类外定义函数 函数的目的是取出私有成员变量的值
{return score;}
int main()//主函数
{
Student stud[5]={Student(101,78.5),Student(102,85.5),
Student(103,98.5),Student(104,100.0),Student(105,99.5)};//定义对象数组
float max(stud);//声明max函数 参数为对象数组的首地址
cout<<max(stud)<<endl;//输出函数 并且调用函数
getchar();
return 0;//返回值为0
}

float max(Student *p)//定义函数 形参为指向类的指针变量p 找出成绩最大的那个
{
float zuida=p->getscore();
for(int w=1;w<5;w=w+1,p=p+1)
{
if(zuida<(p+1)->getscore())
zuida=(p+1)->getscore();
}
return zuida;//并且返回成绩的最大值
}

float max(stud);
声明函数应该是
float max(Student *);

float max(stud);//声明max函数 参数为对象数组的首地址
这个声明没有定义

你的意思应该这样声明吧?
float max(Student *stud);

float max(stud);不对,声明应该在主函数之前。首先把这句删了,你可以这样做:在using namespace std;和class Student//声明一个类之间加这2行代码:class Student;
float max(Student *p);
然后就OK了(class Student的作用是声明下,不然后面的max函数中的参数编译器不知道是什么东西就报错了)