我试图找出一个对象是否存在于指针向量中。
vector<Objectoid*> elements;
bool contains(Objectoid &o){
for(int i = 0; i < elements.size(); i++){
if(elements[i] == &o){
return true;
}
}
return false;
}
但得到这些错误,
no match for 'operator==' in '__first. __gnu_cxx::__normal_iterator<_Iterator, _Container>::operator* [with _Iterator = Objectoid**, _Container = std::vector<Objectoid*, std::allocator<Objectoid*> >]() == __value'
在stl_algo.h
.
非常感谢帮助。
编辑:
完整代码
class Cell : public Element{
public:
Rectf cellRect;
Vec2i size;
Vec2i pos;
vector<Objectoid*> elements;
Cell(Vec2f &pos_, Vec2f &size_){
pos = pos_;
size = size_;
Vec2f p2 = Vec2f(pos.x + size.x, pos.y + size.y);
cellRect = Rectf(pos, p2);
}
void add(Objectoid &o){
elements.push_back(&o);
}
void remove(Objectoid &o){
elements.erase(std::remove(elements.begin(), elements.end(), o), elements.end());
}
bool contains(Objectoid &o){
for(int i = 0; i < elements.size(); i++){
if(elements[i] == &o){
return true;
}
}
return false;
}
};
我正在尝试在 2D 游戏中实现用于碰撞检测的哈希表。这是表格中每个单元格的类。
编辑
所以罪魁祸首其实是
void remove(Objectoid &o){
elements.erase(std::remove(elements.begin(), elements.end(), o), elements.end());
}