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]) {

...并且测试将正常工作,假设该对象实际上是传递给方法的向量中的对象之一(而不仅仅是其中一个的临时副本)。

于 2013-02-14T04:12:52.533 回答