У меня проблема с использованием контейнеров STL в c ++
функция 1;
void addStudent(const Student &s){
set<GradeColumn>::iterator itr;
for(itr = gradeColumns.begin(); itr != gradeColumns.end(); itr++){
itr->addStudent(s, DID_NOT_COMPLETE);
}
}
функция 2:
void addStudent(const Student &s, int grade) const {
column.insert(pair<Student, int>(s, grade));
}
Хорошо, поэтому в функции 1 я использую addStudent, но компилятор выдает мне ошибку, если я не объявляю addStudent в качестве const-функции (ошибка «Объект имеет спецификаторы типов, которые не совместимы с функцией-членом»).
Но если я объявлю addStudent в качестве const-функции, то column.insert (...) выдаст мне следующую ошибку: «Ни один экземпляр перегруженной функции не соответствует списку аргументов, а у объекта 9 объект имеет квалификаторы типов, которые препятствуют совпадению )».
Есть ли способ это исправить? Я что-то упустил?
Спасибо!