我目前正在嘗試根據學生的成績、學號、姓名等對這種情況下學生的物件串列進行排序。
listOfStudents.sort([](const Students& student1, const Students& student2)
{
if (student1.getStudentNumber() == student2.getStudentNumber())
return student1 < student2;
return student1.getStudentNumber() < student2.getStudentNumber();
});
這是我目前用來根據學生編號對串列進行排序的代碼,但它向 student1 和 student2 指出一個錯誤,說“該物件具有不兼容的型別限定符”。
這是學生類的代碼:
class Students {
int studentNumber;
string studentName;
int grade1;
int grade2;
int grade3;
int grade4;
int grade5;
int total;
public:
void setStudent(int number, string name, int g1, int g2, int g3, int g4, int g5, int total) {
this->studentNumber = number;
this->studentName = name;
this->grade1 = g1;
this->grade2 = g2;
this->grade3 = g3;
this->grade4 = g4;
this->grade5 = g5;
this->total = total;
}
int getStudentNumber() {
return this->studentNumber;
}
string getStudentName() {
return this->studentName;
}
int getGrade1() {
return this->grade1;
}
int getGrade2() {
return this->grade2;
}
int getGrade3() {
return this->grade3;
}
int getGrade4() {
return this->grade4;
}
int getGrade5() {
return this->grade5;
}
int getTotal() {
return this->total;
}
};
這是實施部分
list <Students> listOfStudents;
Students students;
上述代碼目前正在產生有關串列型別限定符等的錯誤。
我錯過了什么?我確定我做到了。預先感謝您減輕我的白癡。
uj5u.com熱心網友回復:
int getStudentNumber() {
return this->studentNumber;
}
應該
int getStudentNumber() const {
return this->studentNumber;
}
代碼中的所有其他吸氣劑也是如此。
uj5u.com熱心網友回復:
好的,所以我已經閱讀了一些評論。是的,我忘了制作 <() 運算子。我知道我錯過了什么。
并且使吸氣劑成為常量也很重要,顯然,我也忘記了它們。
這是更新后的代碼,現在可以使用了。感謝大家。
在學生班:
bool operator <(const Students& studentObj) const {
return this->getStudentNumber() < studentObj.getStudentNumber();
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/534088.html
標籤:C 列表排序
