Довольно простой вопрос.Удалить элемент из vector, используя ключевое слово 'this'
У меня есть объект Bullet, где в какой-то момент, когда пуля сталкивается с объектом, она уничтожается и удаляется из вектора Bullets.
Каждый объект Bullet имеет ссылку на вектор/список пуль.
Как удалить его с помощью этого ключевого слова в классе Bullet, когда это произойдет?
void collide(){
//error C2678: binary '==': no operator found which takes a left-hand operand of type 'Bullet'
//(or there is no acceptable conversion)
bullets->erase(std::remove(bullets->begin(), bullets->end(), *this), bullets->end());
}
Так что да, этот код дает мне странную ошибку. Мне нужно знать, как это сделать, не итерации над вектором пуль с использованием цикла while/for и просто использования векторных функций. Очевидно, что текущий метод не работает, поскольку он извергает ошибку, как прокомментировал код.
Я также попытался использовать find() вместо remove(), такую же ошибку.
Есть ли у вас оператор равенства (оператор, т.е. '' ==) для класса 'Bullet'? –
Сообщение об ошибке может быть более четким. И 'std :: remove' * делает * итерацию по вектору, поэтому будьте осторожны, что этот подход имеет линейную стоимость независимо. –
У меня его нет, но я действительно мог бы использовать решение. Я видел другие примеры здесь, которые не нуждались в реализации оператора ==, но они все еще работали с этим методом. Честно говоря, просто как удалить элемент (это) из вектора? –