比较对象指针

时间:2013-03-12 00:01:42

标签: c++ pointers

我有这个函数来测试两个引用是否属于同一个对象。但我一直得到错误无效的操作数到二进制表达式。

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;

我有点理解这个问题,但是不能正确理解语法。
实际上我甚至在这里比较对象,不对吗?如果这两个指针指向同一个地方,我似乎真的在测试?

1 个答案:

答案 0 :(得分:1)

actor是一个对象,它通过引用传递;它是不是指针。所以你必须要做的是将actor的地址与指针进行比较。我们使用一元&运算符来执行此操作:

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

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