我有一个标准化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 {
    ...

09-08 08:54