我有一个标准化Vec2D的功能。我同时收到C4172和C4239错误。我知道我不应该返回局部变量,但是我不知道应该返回什么。我应该把它当作指针吗?
方法:
inline Vec2D& normalize()const {
double l = length();
if (x == 0) {
if (y == 0) {
return Vec2D(0, 0);
}
else {
return Vec2D(0, y / l);
}
}
else if (y == 0) {
return Vec2D(x / l, 0);
}
return Vec2D(x / l, y / l);
}
最佳答案
可以按值返回局部变量。您不应该做的是通过引用退还它们。从返回类型中删除&
。
inline Vec2D normalize()const {
...