KunalTyagi

vec3d template

Oct 10th, 2014
461
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.61 KB | None | 0 0
  1. /////////////////////////////////////////////////vec3d.h///////////////
  2. //...some headers
  3. template <class T>
  4. class Vec3D
  5. {
  6.  public:
  7.  
  8.     Vec3D(void);
  9.     Vec3D(T x, T y, T z);
  10.     Vec3D(const Vec3D<T> &v);    
  11.     explicit Vec3D(Vec3D<T> *p);
  12.     //... some more functions
  13.  
  14.     T _x;
  15.     T _y;
  16.     T _z;
  17. };
  18.  
  19. template <class T> const Vec3D<T> operator*(const Vec3D<T> &v, T factor);
  20. template <class T> const Vec3D<T> operator*(T factor, const Vec3D<T> &v);
  21. template <class T> const Vec3D<T> operator*(const Vec3D<T> &v1,
  22.                                             const Vec3D<T> &v2);
  23. //... some more functions
  24.  
  25. //////////////////////////////////////////////////////////////vec3d.cpp//////////////
  26. template<class T>
  27. Vec3D<T>::Vec3D(void):
  28. {
  29.     _x = T();
  30.     _y = T();
  31.     _z = T();
  32. }
  33.  
  34. template<class T>
  35. Vec3D<T>::Vec3D(T X, T Y, T Z):
  36. {
  37.     _x = X;
  38.     _y = Y;
  39.     _z = Z;
  40. }
  41.  
  42. template<class T>
  43. Vec3D<T>::Vec3D(const Vec3D<T> &v):
  44. {
  45.     _x = v._x;
  46.     _y = v._y;
  47.     _z = v._z;
  48. }
  49.  
  50. template<class T>
  51. Vec3D<T>::Vec3D(Vec3D<T> *p):
  52. {
  53.     _x = p->_x;
  54.     _y = p->_y;
  55.     _z = p->_z;
  56. }
  57.  
  58. template<class T>
  59. const Vec3D<T> operator*(const Vec3D<T> &v, T factor)
  60. {
  61.     return Vec3D<T>(v._x * factor, v._y * factor, v._z * factor);
  62. }
  63.  
  64. template<class T>
  65. const Vec3D<T> operator*(T factor, const Vec3D<T> &v)
  66. {
  67.     return Vec3D<T>(v._x * factor, v._y * factor, v._z * factor);
  68. }
  69.  
  70. template<class T>
  71. const Vec3D<T> operator*(const Vec3D<T> &v1, const Vec3D<T> &v2)
  72. {
  73.     return Vec3D<T>(v1._x * v2._x, v1._y * v2._y, v1._z * v2._z);
  74. }
  75.  
  76. // instantiation
  77. template class Vec3D<double>;
Advertisement
Add Comment
Please, Sign In to add comment