ошибка: передача 'const std :: __ cxx11 :: list <>' в качестве аргумента 'this' отбрасывает квалификаторы - PullRequest
0 голосов
/ 19 октября 2019

У меня есть небольшая проблема, и я не могу найти способ ее исправить ..

В моем файле .hpp я объявил эти две функции и структуру, но получаю сообщение об ошибке "передаю" const std ::__cxx11 :: list <> ', поскольку аргумент' this 'отбрасывает квалификаторы.'

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;
}

Как я могу сделать эторабота

1 Ответ

2 голосов
/ 19 октября 2019
const std::list<Student>& GetStudents() const;

и

this->GetStudents().push_back(t);

конфликтуют. У вас есть контракт на , а не для изменения списка, который вы получаете от GetStudents(), но вы пытаетесь сделать это с помощью push_back.

Решение:

void StudentRegistry::Add(const Student& t) {
    students.push_back(t);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...