Mit dem folgenden Code möchte ich meine Sortierfunktion verwenden, um ein Student
Array zu nehmen und sie basierend auf ihrer gpa
Komponente zu sortieren. Ich muss die Parameter eines Student
Arrays und die Größe des Arrays verwenden. Wenn Sie in Richtung der Unterseite meiner int main
Funktion schauen, versuche ich, die Elementsortierung aufzurufen, um das Array a
zu sortieren, aber ohne Erfolg. Der Fehler, den ich bekomme, ist:Versucht, eine Elementfunktion für ein Klassenarray zu verwenden
Mitgliedsreferenz Basistyp
Student [200]
ist keine Struktur oder Union.
Wie kann ich Code geschrieben Array zu nehmen a
und sagen, das Mitglied Sort
zu verwenden, um auf sie die Parameter I zu verwenden. Danke im Voraus. Wenn das zu viel ist, lass es mich wissen, ich werde versuchen, noch mehr zu spezifizieren.
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;
}
Ein Freund Funktion kein Mitglied ist. – aschepler
Betrachte: 'while (! Ins.eof())', lies [Warum wird iostream :: eof innerhalb einer Schleifenbedingung als falsch angesehen?] (Http://stackoverflow.com/questions/5605125/why-is-iostreameof- inside-a-loop-condition-adjusted-wrong) – user4581301
Brutal off topic: 'exit (1);' ist nicht notwendig in 'main' nur' return 1; ' – user4581301