我想将指向向量数组中某些元素的指针设置为 NULL(基于标准),然后检查元素指针是否为 NULL。如果指向该元素的指针为 NULL,则从向量数组中删除该元素。
我的编译器给了我一个错误,说地址表达式必须是左值或函数指示符,我不明白为什么(代码中注释的行位置)。由于我正在使用 获取值的地址&
,我是否没有看到指向该元素的指针是否为 NULL?
我包含了前面的代码,因为错误可能在那里,
相关代码:
vector<particle> pl = c.particlelist;
vector<particle> noncollision = c.particlelist;
vector<vector<particle>> collisionlist = new vector<vector<particle>>();
for (int i = 0; i < c.numparticles-1; i++){
particle first = pl[i];
for (int j = i+1; j < c.numparticles; j++)
{
particle second = pl[j];
double d = distance(first, second);
if (d==0)
{
vector<particle> temp = {pl[i], pl[j]};
collisionlist.push_back(temp);
noncollision[i].setxposint(NULL);
noncollision[j].setxposint(NULL);
}
else
{
}
}
}
int j = 0;
for (int i = 0; i < noncollision.size(); i++)
{
if (&(noncollision[i].getxpos()) == NULL) ////// ERROR HERE
{
noncollision.erase(noncollision.begin()+i);
}
else
{
j++;
}
}
我是 C++ 的新手,如果您能提出一种更优雅的方法或修复方法,将不胜感激。我还假设我将指针设置为元素的方法noncollision[i].setxposint(NULL);
是否正确?我可以使用函数返回一个整数并获取地址吗?
getxpos 和 setxposint 的函数:
int particle::getxpos(){
return xpos;
}
void particle::setxposint(int b){
xpos = b;
}