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()
访问器执行运行时边界检查,您在遍历向量时不需要这样做。(如果您的实际代码在计算索引方面做了一些花哨的事情,而不是像这里所示的那样进行迭代,那么保持运行时检查可能是谨慎的。)