运算符重载的正确方法是什么?为什么不起作用?

时间:2018-12-31 13:29:53

标签: c++ operator-overloading

我正在尝试重载=, + +=运算符,而前两个很好,但是operator+=()函数产生错误。
这是三个代码:

重载'='运算符

inline vec3& operator = (vec3& ob) { 
    mX = ob.getX();
    mY = ob.getY();
    mZ = ob.getZ();

    return *this;
}

重载“ +”运算符

vec3 vec3::operator + (const vec3& ob) {
    vec3 vec(mX + ob.getX(), mY + ob.getY(), mZ + ob.getZ());
    return vec;
}

重载'+ ='运算符

vec3& vec3::operator += (const vec3& obj) {
    *this = *this + obj;
    return *this;
}

错误

binary '=': no operator found which takes a right-hand operand of type 'vec3'

1 个答案:

答案 0 :(得分:0)

赋值运算符应为const:

vec3& operator= (const vec3& ob)