我有一个小问题,找不到解决方法。
在我的.hpp文件中,我声明了这两个函数和struct,但由于“此”参数放弃了限定词,因此出现了“通过const std :: __ cxx11 :: list <>”错误。
struct Student {
std::string name;
std::string student_id;
};
class StudentRegistry {
public:
StudentRegistry(){}
void Add(const Student &t);
const std::list<Student>& GetStudents() const;
private:
std::list<Student> students;
};
在.cpp文件中,我尝试执行以下操作:
void StudentRegistry::Add(const Student &t){
this->GetStudents().push_back(t);
}
const std::list<Student>& StudentRegistry::GetStudents() const{
return students;
}
我该如何做?
答案 0 :(得分:2)
const std::list<Student>& GetStudents() const;
和
this->GetStudents().push_back(t);
有冲突。您有不修改从GetStudents()
获得的列表的合同,但是您尝试使用push_back
进行修改。
解决方案:
void StudentRegistry::Add(const Student& t) {
students.push_back(t);
}