#ifndef __DVECTOR_H__ #define __DVECTOR_H__ #include #include #include "vector.h" template class DVector : public Vector { public : DVector(size_t dim = 0); DVector(const std::vector&); DVector(const std::initializer_list &init); virtual const size_t size() const override; virtual T& operator[](size_t i) override; virtual const T& operator[](size_t i) const override; DVector& operator<<(const T&); /* Plus / minus */ DVector& operator+=(const Vector&); DVector& operator-=(const Vector&); /* Scalar multiplication / division */ DVector& operator*=(double k); DVector& operator/=(double k); /* Reverse operator */ DVector& operator~(); /* Unit vector */ DVector& unit(); private: std::vector components; }; template const DVector operator+(DVector , const Vector& ); template const DVector operator-(DVector , const Vector& ); template const DVector operator*(DVector , double); template const DVector operator/(DVector , double); /*template const DVector operator+(const Vector&, DVector); template const DVector operator-(const Vector&, DVector);*/ template const DVector operator*(double, DVector); template const DVector operator/(double, DVector); template const DVector operator-(DVector); inline const DVector operator^(const DVector& v, const Vector&); /* * Include definitions file */ #include "dvector.tpp" #endif