0

いくつstd::vectorかのオブジェクトを含む があります。同じオブジェクトで何かを行っているかどうかを確認するために、メモリ アドレスを使用するにはどうすればよいですか (thisこの目的でポインターを使用しますか?)。

例えば:

void particle::calcFrc(std::vector<particle>& particles)
{
    vector3d tRel;
    mFrc.reset();
    for(unsigned int j = 0; j < particles.size(); j ++){

        if(... what goes here? ...){

            tRel = particles.at(j).mPos - mPos;

            if(tRel != zero()){
                // do stuff
            }
        }
    }
}

このメソッドが呼び出されたのと同じオブジェクトを参照しているifかどうかを確認するために、ステートメントをチェックしたいと思います。particles.at(j)

4

1 に答える 1

0
if(... what goes here? ...){

あなたが探しているのは次のとおりだと思います:

if (this != &particles[j]) {

...そして、このオブジェクトが実際にメソッドに渡されたベクトル内のオブジェクトの1つであると仮定すると、テストは正常に機能します(それらの1つの一時的なコピーではありません)。

于 2013-02-14T04:12:52.533 に答える