Я уверен, что где-то уже отвечали, но я не знаю, что искать.
У меня следующая ситуация. Я создал класс 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;
Я не получаю ошибок вообще. Зачем? Разве эти два выражения не должны быть эквивалентными?
EDIT:
Вот мои определения "*" и "+":]
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);
}