【发布时间】:2011-09-16 16:38:36
【问题描述】:
我确定这已经在某个地方得到了回答,但我不知道要搜索什么。
我有以下情况。我创建了一个 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);
}
【问题讨论】:
-
你能告诉我们运算符重载的定义吗?
-
是的。我会把它添加到问题中
-
e_x 和 e_y 是 Vector 类型,对吧?
标签: c++ expression overloading operator-keyword