La situación es la siguiente: dispongo de una clase llamada Vector2D que utilizo para definir vectores y donde mi intención es realizar sobrecarga de operadores binarios (+,-,*) para poder operar con vectores facilmente. He realizado la sobrecarga del operador suma de la siguiente forma (adjunto definición y declaración del método dentro de la clase):
Vector2D operator +(Vector2D &v);//suma de vectores
Vector2D Vector2D::operator +(Vector2D& v)
{
Vector2D res;
res.x = x + v.x;
res.y = y + v.y;
return res;
}
Los valores x e y son atributos definidos dentro de la propia clase. El problema viene al implementar una operación de suma de vectores fuera de la clase, que me sale un error como si no se estuviese detectando la sobrecarga realizada. He hecho el correspondiente include de la clase Vector2D, pero no sé por qué el compilador parece omitir la sobrecarga.
Error C2679 '+' binario: no se encontró un operador que adopte un operando en la parte derecha de
tipo 'Vector2D' (o bien no existe una conversión aceptable)
El error sale al hacer la siguiente operación:
position = position + speed * t + aceleration * (0.5f * t * t);
Aclarar que los atributos position, speed y aceleration están declarados tipo Vector2D dentro de otra clase externa a Vector2D
Muestro también como está implementado el método para la sobrecarga del operador *:
Vector2D Vector2D::operator*(float num) {
Vector2D vector;
vector.x = x * num;
vector.y = y * num;
return vector;
}
Gracias por la ayuda de antemano :)