0

我有这个函数来测试两个引用是否指向同一个对象。但我不断收到错误无效操作数到二进制表达式。

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;

我有点理解这个问题,但不能完全正确地理解语法。
实际上我什至在这里比较对象,不是吗?看来我实际上是在测试这两个指针是否指向同一个地方?

4

1 回答 1

1

actor是一个对象,它是通过引用传递的;它不是一个指针。所以你必须做的是比较actor指针的地址。我们通过使用一元运算符来做到这一点&

if (&actor == this->stack[x])

==在实际对象上使用actor是无效的,除非它有足够的operator==. 否则你会得到你之前所说的错误。

于 2013-03-12T15:27:08.697 回答