使用下面的代碼,我想使用我的排序函數獲取Student
數組,並根據它們的gpa
組件對它們進行排序。我必須使用數組的參數Student
和數組的大小。如果你看着我的int main
函數的底部,我嘗試調用成員排序來排序數組a
但無濟於事。我得到的錯誤是:嘗試在類數組上使用成員函數
成員參考基類型
Student [200]
不是結構或聯合。
我如何寫我的代碼,以陣列a
說使用成員Sort
它給予我必須使用的參數。提前致謝。如果這太多,請讓我知道我會嘗試指定更多。
class Student
{
private:
string ID, fname, lname, level;
double gpa;
public:
Student();
Student(string id, string first, string last, double Gpa, string grade);
string getID() const;
string getfirst() const;
string getlast() const;
string getlevel() const;
double getGPA() const;
void setID(string id);
void setfirst(string f1);
void setlast(string l1);
void setlevel(string lev);
void setGPA(double GPA1);
friend void Sort(Student studentlist[], int size);
friend ostream& operator <<(ostream& ost, Student S1);
};
int main()
{
ifstream ins;
ofstream outs;
ins.open("input.dat");
outs.open("output.dat");
if(ins.fail())
{
cout << "File not found.";
exit(1);
}
if(outs.fail())
{
cout << "Output file not opened.";
exit(1);
}
Student a[200];
int x = 0;
while(!ins.eof())
{
string id, fnam, lnam, levl;
double point;
ins >> id >> fnam >> lnam >> point >> levl;
a[x].setID(id);
a[x].setfirst(fnam);
a[x].setlast(lnam);
a[x].setGPA(point);
a[x].setlevel(levl);
if(a[x].getID() == "")
{
break;
}
x += 1;
}
if(x == 0)
{
cout << "File is empty" << endl;
return 0;
}
x = x +1;
a.Sort(a, x);
int t=0;
while(t<x)
{
outs << a[t];
t += 1;
}
outs.close();
ins.close();
return 0;
}
友元函數不是成員。 – aschepler
關於:while(!ins.eof())',請閱讀[爲什麼iostream :: eof在循環條件內被認爲是錯誤的?](http://stackoverflow.com/questions/5605125/why-is-iostreameof-循環內條件考慮錯誤) – user4581301
殘酷地脫離主題:'退出(1);'在'main'中不必''返回1;'' – user4581301