class Student{
public:
Student();
Student(string name, int score);
string getName();
int getScore();
void insert(string name, int score);
friend ostream& operator<<(ostream& os, const Student& student){
os << "Name: "<<student.name<<",Score:"<<student.score<<endl;
return os;
}
private:
string name;
int score;
};
string Student::getName(){
return name;
}
int Student::getScore(){
return score;
}
我定义了上面的类
和main函数我定义了一个比较函数
int compStudent(const Student &student1, const Student &student2){
int score1 = student1.getScore();
int score2 = student2.getScore();
if(score1 == score2) return 0;
if(score1<score2) return -1;
return 1;
}
然后错误说这个参数是const但函数不是const。
然后我删除了const,它的工作原理是什么?
答案 0 :(得分:3)
为了能够在getScore()
对象上调用const
,需要声明该方法const
:
class Student{
...
int getScore() const;
...
};
int Student::getScore() const {
return score;
}
请参阅Meaning of "const" last in a C++ method declaration?进行讨论。
答案 1 :(得分:0)
该行
int score1 = student1.getScore();
在student1上调用getScore()
方法,这是一个const引用。但是getScore()
方法不是const方法(它不承诺不修改student1
)。
要解决此问题,请修改方法以指示它是const:
class Student {
// ...
int getScore() const;
// ...
};