#include "Point.h"
#include "Vector.h"
+#include <ostream>
+
namespace geometry {
template<class T>
return Point<T>(lhs.X() + rhs.X(), lhs.Y() + rhs.Y());
}
+template<class T>
+inline Vector<T> &operator +=(Vector<T> &lhs, const Vector<T> &rhs) {
+ lhs = lhs + rhs;
+ return lhs;
+}
+template<class T>
+inline Point<T> &operator +=(Point<T> &lhs, const Vector<T> &rhs) {
+ lhs = lhs + rhs;
+ return lhs;
+}
+
template<class T>
inline Vector<T> operator -(const Vector<T> &lhs, const Vector<T> &rhs) {
return Vector<T>(lhs.X() - rhs.X(), lhs.Y() - rhs.Y());
return Vector<T>(-v.X(), -v.Y());
}
+template<class T>
+inline std::ostream &operator <<(std::ostream &out, const Point<T> &p) {
+ out << '(' << p.X() << ", " << p.Y() << ')';
+ return out;
+}
+template<class T>
+inline std::ostream &operator <<(std::ostream &out, const Vector<T> &v) {
+ out << '<' << v.X() << ", " << v.Y() << '>';
+ return out;
+}
+
}
#endif /* GEOMETRY_OPERATORS_H_ */