the = and += operators should return a reference to the left hand side object after it's done. This is so you can do silly things like a = b = 1; and have it work just fine, as expected. (Both a and b will be equal to 1) Also, methods in classes should not be declared as inline.
Vector& Vector::operator+= (const Vector & vec)
{
this->X += vec.X; // this is a pointer to the current object.
this->Y += vec.Y; // Optional but slightly more clear.
return *this;
}