Need help with overloaded * operator

I'm writing a vector class that will add subtract multiply vectors etc, but I'm having trouble with the * operator. I need to multiply a vector (a complex datatype defined by the class) by an integer, basically scalar multiplication, but I get this error when I compile: error: no match for 'operator*' in '2 * estvec' where 2 is just the integer I used for testing. I tried two ways of doing it but neither of them work. Here is the code:

The public/private declarations of the class (not complete):

Code:

`class vector`

{

private:

double magnitude;

double direction;

public:

vector(); //Default consructor

vector(const vector &old); //Copy Constructor

//Overloaded operators

//for first method

friend vector operator *(const vector &left, const vector &right);

//for second method. Note: I only kept one or the other

vector operator*(const vector &num);

};

Here's the first method:

Code:

vector operator *(const vector &left, const vector &right)

{

vector product;

product.magnitude = left.magnitude * right.magnitude;

if (left.magnitude < 0.0)

{

product.direction = right.direction + 180.0;

}

//this is based on a 360 degree system

return product;

}

Here's the second method:

Code:

` vector vector::operator*(const vector &num)`

{

vector result;

result.magnitude = magnitude * num.magnitude;

result.direction = num.direction;

return result;

}

I simply used this to test the code:

Code:

` vector prod;`

prod = 2 * estvec; //estvec is just another vector I declared earlier

cout << prod; //I have a working overloaded << operator