@Loligan

Удаление элемента из вектора целых числе. Как исправить?

.h human

...
public:
vector "треугольная скобка" int "треугольная скобка" friends;
...


.h function

private:
vector "треугольная скобка" human* "треугольная скобка" hmn_v;
...
...
public
bool del_friend(human *hmn,int id_user)
...


cpp function
bool function::del_friend(human *hmn, int id_user)
{
if (hmn->friends.size()==0)
{
return false;
}
for(vector::iterator it=hmn->friends.begin(); it != hmn->friends.end(); ++it){
if(id_user==*it)
{
hmn->friends.erase(it);
it--;
}
}
delete id_user;
return true;
}


ошибка в строке delete id_user; :
ошибка: type 'int' argument given to 'delete', expected pointer
  • Вопрос задан
  • 138 просмотров
Пригласить эксперта
Ответы на вопрос 2
LittleFatNinja
@LittleFatNinja
горе девелопер, любитель лютой садомии
компилятор тебе прямо говорит id_user - это int
оперятор delete удаляет обьект, принимая указатель

вроде тебе эта строка вообще не нужна
Ответ написан
chlp
@chlp
фулстек
1. Вы уже удалили из вектора данные вызывом
hmn->friends.erase(it);
delete нужен для очищения выделенной памяти оператором new.
2. Это лишнее:
if (hmn->friends.size()==0)
{
return false;
}

т.к. vector.begin() == vector.end() тоже, что и vector.empty(). Ваш цикл for сразу завершится, если вектор окажется пустым.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы