Вот мой код:
std::list<User>::iterator it; while (it != allUsers.end()) { if (it->getId() == userId) { allUsers.remove(*it); return *it; } else { it++; } }
Ошибка, которую я получаю: список итераторов несовместим со стиранием Почему?
Вы должны использовать erase(), а не remove(), чтобы удалить элемент из списка с помощью итератора:
erase()
remove()
while (it != allUsers.end()) { if (it->getId() == userId) { auto oldvalue = *it; allUsers.erase(it); return oldvalue; } it++; }