#include<iostream>
using namespace std;
class Student
{
public:
Student(int n,int s):number(n),score(s){} //构造函数初始化
static float average(); //声明静态函数
void data(); //声明成员函数
private:
int number,score;
static int Average,sum; //静态数据成员Average,sum
};
int Student::Average=0; //静态数据成员初始化
int Student::sum=0;
void Student::data()
{
cout<<"Please input data:"<<endl;
cin>>number>>score;
}
float Student::average(Student &stu)
{
int i,j;
cout<<"The number of students that you want to calculate is:"<<endl;
cin>>j;
for(i=0;i<j;j++)
{
sum=sum+stu[i].score;
}
Average=sum/i;
return(Average);
}
int main()
{
Student stu[3]={Student(1,90),Student(2,91),Student(3,92)};
//对象数组初始化
int k;
for(k=0;k<3;k++)
{
stu[k].data();
}
average();
return 0;
}
average 函数声明与定义不符合;
line 7 和line 23行
同时你average函数输入的是一个student,但是你在里面却想要把它当做一个数组~
如果你要改,那么你就需要把average声明为:static float average(Student stu[],int lengh);
定义变更为:
float Student::average(Student stu[], int lengh) //###修改函数传参###
{
int i, j;
cout << "The number of students that you want to calculate is:" << endl;
cin >> j;
for (i = 0; i < j && i < lengh; j++)//####大小做限定不能超过他本来的大小####
{
sum = sum + stu[i].score;
}
Average = sum / i;
return (Average);
}