Even though you solved the problem, take my vectors, there are more overloaded operators. Ignore the vector multiplication, I added that without thinking. :)
Also why does your variable class contain two floats with the exact same name?
//Vector.hclass vec2f{public: vec2f(); vec2f(float x, float y); float GetX() const; float GetY() const; void SetX(float x); void SetY(float y); vec2f operator-=(const vec2f &b); vec2f operator+=(const vec2f &b); vec2f operator*=(const vec2f &b); vec2f operator/=(const vec2f &b); vec2f operator*=(const float &b); vec2f operator/=(const float &b); vec2f operator*=(const double &b); vec2f operator/=(const double &b);private: float x, y;};vec2f operator-(const vec2f &a, const vec2f &b);vec2f operator+(const vec2f &a, const vec2f &b);vec2f operator*(const vec2f &a, const vec2f &b);vec2f operator/(const vec2f &a, const vec2f &b);vec2f operator*(const vec2f &a, const float &b);vec2f operator/(const vec2f &a, const float &b);vec2f operator*(const vec2f &a, const double &b);vec2f operator/(const vec2f &a, const double &b);vec2f operator*(const vec2f &a, const int &b);vec2f operator/(const vec2f &a, const int &b);//Vector.cppvec2f::vec2f(){ x = y = 0;}vec2f::vec2f(float x, float y){ this->x = x; this->y = y;}float vec2f::GetX() const{ return x;}float vec2f::GetY() const{ return y;}void vec2f::SetX(float x){ this->x = x; }void vec2f::SetY(float y){ this->y = y; }vec2f operator-(const vec2f &a, const vec2f &b){ return vec2f(a.GetX() - b.GetX(), a.GetY() - b.GetY());}vec2f operator+(const vec2f &a, const vec2f &b){ return vec2f(a.GetX() + b.GetX(), a.GetY() + b.GetY());}vec2f operator*(const vec2f &a, const vec2f &b){ return vec2f(a.GetX() * b.GetX(), a.GetY() * b.GetY());}vec2f operator/(const vec2f &a, const vec2f &b){ return vec2f(a.GetX() / b.GetX(), a.GetY() / b.GetY());}vec2f vec2f::operator-=(const vec2f &b){ this->SetX(this->GetX() - b.GetX()); this->SetY(this->GetY() - b.GetY()); return *this;}vec2f vec2f::operator+=(const vec2f &b){ this->SetX(this->GetX() + b.GetX()); this->SetY(this->GetY() + b.GetY()); return *this;}vec2f vec2f::operator*=(const vec2f &b){ this->SetX(this->GetX() * b.GetX()); this->SetY(this->GetY() * b.GetY()); return *this;}vec2f vec2f::operator/=(const vec2f &b){ this->SetX(this->GetX() / b.GetX()); this->SetY(this->GetY() / b.GetY()); return *this;}vec2f operator*(const vec2f &a, const float &b){ return vec2f(a.GetX() * b, a.GetY() * b);}vec2f operator/(const vec2f &a, const float &b){ return vec2f(a.GetX() / b, a.GetY() / b);}vec2f operator*(const vec2f &a, const double &b){ return vec2f(a.GetX() * b, a.GetY() * b);}vec2f operator/(const vec2f &a, const double &b){ return vec2f(a.GetX() / b, a.GetY() / b);}vec2f vec2f::operator*=(const float &b){ this->SetX(this->GetX() * b); this->SetY(this->GetY() * b); return *this;}vec2f vec2f::operator/=(const float &b){ this->SetX(this->GetX() / b); this->SetY(this->GetY() / b); return *this;}vec2f vec2f::operator*=(const double &b){ this->SetX(this->GetX() * b); this->SetY(this->GetY() * b); return *this;}vec2f vec2f::operator/=(const double &b){ this->SetX(this->GetX() / b); this->SetY(this->GetY() / b); return *this;}