0

2 つの参照が同じオブジェクトへの参照であるかどうかをテストするこの関数があります。しかし、エラー無効なオペランドをバイナリ式に取得し続けます。

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;

私は問題をある程度理解していますが、構文を正しくすることはできません。
実際、私はここでオブジェクトを比較していますよね?これらの 2 つのポインターが同じ場所を指しているかどうかを実際にテストしているように見えますか?

4

1 に答える 1

1

actorオブジェクトであり、参照渡しされています。ポインターではありません。したがって、あなたがしなければならないことは、のアドレスをactorポインターと比較することです。単項演算子を使用してこれを行います&

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

の十分なオーバーロードがない限り==、実際のオブジェクトでの使用は無効です。そうしないと、前述のエラーが発生します。actoroperator==

于 2013-03-12T15:27:08.697 に答える