Cześć,
wydaje mi się, że nie masz przeładowanych operatorów dlatego lista nie może sobie poradzić z usunięciem obiektu. Spróbuj tak. Utwórz klasę:
class ID
{
public:
string imie;
string nazwisko;
bool operator ==(const ID& dane) const { return imie == dane.imie && nazwisko == dane.nazwisko;}
bool operator !=(const ID& dane) const{return !operator==(dane); }
};
Tu masz przeładowane dwa operatory == oraz !=. Możesz sobie wprowadzić własne warunki w zależności od problemu.
Następnie tworzysz wartość, która ma być usunięta z listy np. tak
ID dane_do_usuniecia;
dane_do_usuniecia.imie = "Jan";
dane_do_usuniecia.nazwisko = "Kowalski";
lista.remove(dane_do_usuniecia);