아주 간단한 질문입니다.'this'키워드를 사용하여 벡터에서 요소 제거
글 머리 기호가 개체와 충돌 할 때 어느 시점에서이 글 머리 기호는 불릿의 벡터에서 파괴되어 제거됩니다.
각 글 머리 기호 개체에는 벡터/글 머리 기호 목록에 대한 참조가 있습니다.
글 머리 기호 클래스에 키워드를 사용하면 어떻게 제거합니까?
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 루프를 사용하고 벡터 함수를 사용하여 총알의 벡터를 반복하지 않고이를 수행하는 방법을 알아야합니다. 분명히 현재의 방법은 코드에서 주석으로 표시된대로 오류를 분출하기 때문에 작동하지 않습니다.
나는 또한 remove() 대신 find()를 사용하여 동일한 오류를 시도했다.
당신이'Bullet' 클래스에 대한 항등 연산자 (예 : '연산자 ==를')이 있습니까? –
오류 메시지가 거의 분명하지 않을 수 있습니다. 그리고'std :: remove' *는 vector를 반복하므로,이 접근법은 선형 비용을 가지지 않는다는 것에주의하십시오. –
나는 하나도 가지고 있지 않지만 실제로 해결책을 사용할 수 있습니다. 여기에 연산자를 구현할 필요가없는 다른 예제를 보았습니다. == 아직이 메서드로 작업했습니다. 솔직히 말해서 벡터에서 요소 (this)를 제거하려면 어떻게해야합니까? –