C++ 是否使用此指针检查对象的相同实例?

C++ 是否使用此指针检查对象的相同实例?,c++,this,instance,C++,This,Instance,我有一个包含一些对象的std::vector。如何使用内存地址(我是否要为此使用this指针?)检查我是否正在使用同一对象执行操作 例如: void particle::calcFrc(std::vector<particle>& particles) { vector3d tRel; mFrc.reset(); for(unsigned int j = 0; j < particles.size(); j ++){ if(..

我有一个包含一些对象的
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
            }
        }
    }
}
void particle::calcFrc(std::vector&particles)
{
矢量三维树;
mFrc.reset();
对于(无符号整数j=0;j
我想在
if
语句中进行检查,查看
particles.at(j)
是否引用了从中调用此方法的同一对象

if(... what goes here? ...){
我想你要找的是:

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

。。。假设这个对象实际上是传递给该方法的向量中的一个对象(而不仅仅是其中一个对象的临时副本),那么测试就可以正常工作。

j
此时不存在。您的
if
块是否位于错误的位置?您是否考虑过操作员的
&
地址?抱歉,我已进行了编辑。
已经是一个指针-通过对其应用
&
,您将获得指向指针的指针。关于<<代码> > <代码>的更多信息可以在你的C++书籍中找到。你从目前为止一直在学习的一本书。在一个完全无关的切线上,你最好做<代码>粒子[j] < /> >而不是<代码>粒子。AT(j)< /代码>。
.at()
访问器执行运行时边界检查,您在遍历向量时不需要这样做。(如果您的实际代码在计算索引方面做了一些花哨的事情,而不是像这里所示的那样进行迭代,那么保持运行时检查可能是谨慎的。)