Я пробовал что-то похожее на this, но это не работает для меня. Вот код:Удаление объекта из вектора
void Player::remove_card_from_hand(Card* the_card){
current_cards.erase(remove(current_cards.begin(), current_cards.end(), the_card), current_cards.end()); //Error occurs here at third argument "the_card"
}
где vector<Card*>current_cards;
определяет вектор указателей на объекты карты.
Однако я получаю ошибку:
C2660: 'remove' : function does not take 3 arguments
я понимаю, что с the_card как указатель на объект, то, что, вероятно, называя его. Может кто-нибудь сказать мне, что не так с этим кодом, или показать мне другой способ попытаться удалить объект из вектора объектов.
Редактировать
Простая проблема, не хватает #include <algorithm>
. В настоящее время работает.
Вы, кажется, используете 'namespace std;', что редко является хорошей идеей. Возможно, существует еще одна функция 'remove()' scope? Получаете ли вы ту же ошибку, если вы явно квалифицируете 'std :: remove()'? – Angew
Да, я использую namespace std; '. 'std :: remove()' не имеет никакого отношения к той же самой ошибке. По функции в области, вы имеете в виду, что я использовал 'remove()' в другом месте? –
Это сообщение об ошибке * только *? Нет дополнительного текста, указывающего на тот, который компилятор * думает *, о котором вы говорите? – WhozCraig