#include template class Vector; template Vector operator+(const Vector& v1, const Vector& v2); template std::ostream& operator<<(std::ostream& os, const Vector& v); /*---------------------------------------------------------------------------*\ Class Vector Declaration \*---------------------------------------------------------------------------*/ template class Vector { double X, Y; public: inline Vector(const double x, const double y); C x() const { return X; } C y() const { return Y; } friend Vector operator+ (const Vector& v1, const Vector& v2); friend std::ostream& operator<<(std::ostream& os, const Vector& v) { os << v.X << '\t' << v.Y << '\n'; return os; } }; template inline Vector::Vector(const double x, const double y) { X = x; Y = y; } template inline Vector operator+(const Vector& v1, const Vector& v2) { return Vector(v1.X+v2.X, v1.Y+v2.Y); }