我有这个函数来测试两个引用是否属于同一个对象。但我一直得到错误无效的操作数到二进制表达式。
bool Collider::remove(Actor &actor){
for(int x=0; x< this->stack.size(); x++){
if( actor == this->stack[x]){
return true;
}
}
return false;
}
这是我定义变量堆栈的方式
vector<Actor*> stack;
我有点理解这个问题,但是不能正确理解语法。
实际上我甚至在这里比较对象,不对吗?如果这两个指针指向同一个地方,我似乎真的在测试?
答案 0 :(得分:1)
actor
是一个对象,它通过引用传递;它是不是指针。所以你必须要做的是将actor
的地址与指针进行比较。我们使用一元&
运算符来执行此操作:
if (&actor == this->stack[x])
在实际的==
对象上使用actor
无效,除非它有足够的operator==
重载。否则你会收到你之前说过的错误。