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):

Here's the first method: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 second 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; }

I simply used this to test the code:Code:vector vector::operator*(const vector &num) { vector result; result.magnitude = magnitude * num.magnitude; result.direction = num.direction; return result; }

Code:vector prod; prod = 2 * estvec; //estvec is just another vector I declared earlier cout << prod; //I have a working overloaded << operator