C ++, Pushing в список <Class *>, вектор <Class>итератор - PullRequest
0 голосов
/ 21 марта 2019

Я получил вектор , и я должен создать функцию, которая возвращает List . На данный момент у меня есть это в функции

    list<C_Student*> listt;

    for (vector<C_Student>::iterator it = V_Students.begin(); it != V_Students.end(); it++)
        if (it->GetDegreeByDisciplineName(disciplineName) == degree)
            listt.push_back(*it);

, что дает

Description Project File Line Suppression State Error (active) E0304 no instance of overloaded function "std::list<_Ty, _Alloc>::push_back [with _Ty=C_Student *, _Alloc=std::allocator<C_Student *>]" matches the argument list C++_Project

Что я делаю не так?

1 Ответ

2 голосов
/ 21 марта 2019

По

listt.push_back(*it);

вы пытаетесь сохранить копию C_Student в списке.Чтобы вставить указатель в список, вам нужно использовать оператор & для разыменования *it объекта:

listt.push_back(&*it);

Элементы вектора недействительны при изменении вектора, это может привести к зависанию указателей в вашемсписок.Я надеюсь, что вы знаете об этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...