// ========================================================================== // $Id: point2d_template.cpp,v 1.2 2011/09/10 01:08:19 jlang Exp $ // CSI2372 example Code for lecture 9 // ========================================================================== // (C)opyright: // // Jochen Lang // SITE, University of Ottawa // 800 King Edward Ave. // Ottawa, On., K1N 6N5 // Canada. // http://www.site.uottawa.ca // // Creator: jlang (Jochen Lang) // Email: jlang@site.uottawa.ca // ========================================================================== // $Log: point2d_template.cpp,v $ // Revision 1.2 2011/09/10 01:08:19 jlang // Updates F10 // // Revision 1.1 2006/10/29 00:32:05 jlang // Check in for lecture 9 // // // ========================================================================== #include using std::cout; using std::endl; template class Point2D{ T d_components[2]; public: Point2D(); Point2D( T* _components ); Point2D add( const Point2D& _oPoint ) const; void print() const; }; //----------------------------------------------- template Point2D::Point2D() {} template Point2D::Point2D( T* _components ) { for ( int i=0; i<2; i++ ) { d_components[i] = _components[i]; } } template Point2D Point2D::add( const Point2D& _oPoint ) const { Point2D res; for ( int i=0; i<2; i++ ) { res.d_components[i] = d_components[i] + _oPoint.d_components[i]; } return res; } template void Point2D::print() const { cout << "( "; for ( int i=0; i<2; i++ ) { if (i!=0) cout << ", "; cout << d_components[i]; } cout << " )" << endl; } int main() { int initA[] = {3,8}; int initB[] = {-24,12}; Point2D intPt1(initA), intPt2(initB), intPt3; intPt3 = intPt1.add( intPt2 ); intPt1.print(); cout << " + "; intPt2.print(); cout << " = "; intPt3.print(); cout << endl; double initC[] = {3.2,8.09}; double initD[] = {-24.9,12.1}; Point2D dPt1(initC), dPt2(initD), dPt3; dPt3 = dPt1.add( dPt2 ); dPt1.print(); cout << " + "; dPt2.print(); cout << " = "; dPt3.print(); cout << endl; }