【发布时间】:2017-12-04 18:17:34
【问题描述】:
我需要遍历对象向量,并更改它们的变量。但是,当我这样做时,C++ 给了我以下错误:
void Projectile::setX(float &)': cannot convert argument 1 from 'float' to 'float &'
initial value of reference to non-const must be an lvalue
我尝试这样做的方法是在这个 for 循环中:
for (Projectile p : activeProjectiles) {
if (p.isLeftPublic) {
float g = p.getX();
p.setX(g - (60));
}
else if (!p.isLeftPublic) {
float g = p.getX();
p.setX(g - (60));
}
}
GetX 和 SetX 函数如下所示:
float Projectile::getX() {
return x;
}
void Projectile::setX(float &_x) {
this->x = _x;
}
任何帮助将不胜感激。
【问题讨论】:
-
Projectile::setX()中没有理由通过引用传递 -
您可以删除
this->表示法,因为参数和数据成员具有不同的名称。直接访问数据成员:x = _x; -
就我个人而言,我会从
_x中删除那些繁琐的_,因为this->x = x;是明确且富有表现力的。 -
而
getX应该是const函数。
标签: c++ pass-by-reference