So, I'm trying to overload the * operator so that I can multiply two vectors (math vectors, not data structure vectors) together.

Here is my vector class.

class Vec{
float x;
float y;
float z;

public:

Vec(){}

Vec(float X, float Y, float Z){
x = X;
y = Y;
z = Z;
}

Vec operator*(Vec b){
return Vec(this->x*b.x, this->y*b.y, this->z*b.z);
}

Vec operator*(int a){
return Vec(a*this->x, a*this->y, a*this->z);
}

Vec operator-(Vec b){
return Vec(this->x-b.x, this->y-b.y, this->z-b.z);
}

float getX(){
return x;
}

float getY(){
return y;
}

float getZ(){
return z;
}

void setX(float newX){
x = newX;
}

void setY(float newY){
y = newY;
}

void setZ(float newZ){
z = newZ;
}
};

Later In my code, I use this:

Vec R = 2 * dotProduct(L, Normal) * Normal - L;

Where L and Normal are Vec and dotProduct() returns a Vec.
Here is the error I keep getting:
error C2677: binary '*' : no global operator found which takes type 'Vec' (or there is no acceptable conversion)

Could someone please help me with this?