我確定這已經在某個地方得到了回答,但我不知道要搜索什麼。C++運算符在表達式中的重載
我有以下情況。我創建了一個Vector類,並重載了「*」(乘以escalar)和「+」運算符(添加兩個向量)。現在,下面的代碼行:
Vector sum = (e_x*u_c) + (e_y*u_r);
這給了我下面的錯誤:
error: no match for 'operator+' in '((Teste*)this)->Teste::e_x.Vector::operator*(u_c) + ((Teste*)this)->Teste::e_y.Vector::operator*(u_r)'
但是,如果我被替換此錯誤行:
Vector aux = (e_x*u_c);
Vector aux2 = (e_y*u_r);
Vector sum = aux + aux2;
我沒有得到任何錯誤在所有。爲什麼?這兩種表達方式是不是等同?
編輯: 這裏有 「*」 和 「+」 我的定義:]
Vector Vector::operator+(Vector& right)
{
return Vector(x + right.x, y + right.y, z + right.z);
}
double Vector::operator*(Vector& right)
{
return this->scalar_product(right);
}
,你能否告訴我們的操作符重載的定義是什麼? – fredoverflow 2011-06-16 19:57:49
是的。我將它添加到問題 – 2011-06-16 19:58:42
e_x和e_y是Vector類型的,對不對? – 2011-06-16 19:59:28