Reputation: 3222
I want to remove a specific object from my list wielrennerslist
but some how is giving errors while compiling.
cout << "Wielrenner" << endl;
list<Wielrenner> wielrennerslist = wielerploegOB.getWielrennersList();
cout << "Welke wielrenner wil je verwijderen?" << endl;
// Alle objecten afprinten in de lijst
for (list<Wielrenner>::iterator it = wielrennerslist.begin(); it != wielrennerslist.end(); it++) {
Wielrenner wielrennerOB = *it;
cout << teller << " - " << wielrennerOB.getVoornaam() << " " << wielrennerOB.getAchternaam() << endl;
teller++;
}
cin >> inputID;
// Naar het object gaan
int N = inputID; /* index of the element you want to retrieve */
if (wielrennerslist.size() > N) {
list<Wielrenner>::iterator iter = wielrennerslist.begin();
std::advance(iter, N);
// 'it' points to the element at index 'N'
Wielrenner* wielrennerOB2;
wielrennerOB2 = &*iter;
wielrennerslist.remove(*wielrennerOB2); // something wrong with this?
wielerploegOB.setWielrennerList(wielrennerslist);
}//if
Upvotes: 0
Views: 4800
Reputation: 227370
You can use the iterator and std::list::erase to remove the element in question like this:
wielrennerslist.erase(iter);
Otherwise, the remove method should be used like this:
wielrennerslist.remove(*iter);
But this method doesn't do what I think you want to do. It will remove all elements that are equal to the value of the element at position N
. But if this is what you want, then you need to have an equality comparison for Wielrenner
objects. See std::list::remove.
Upvotes: 2