|
class Matrix3x3 { private: double A[3][3]; public: Vector3 operator* ( Vector3 & v ); // The implementation is elsewhere !! }; |
The body of the member function is not considered as part of the class definition |
|
|
|
|
Vector3.h |
---|
#include <iostream.h> class Matrix3x3; class Vector3 { private: double x[3]; public: Vector3(); Vector3(double a, double b, double c); Matrix3x3 operator*(Matrix3x3 & M); friend ostream & operator<<(ostream &, Vector3 &); friend class Matrix3x3; }; |
Matrix3x3.h |
---|
#include <iostream.h> class Vector3; class Matrix3x3 { private: double A[3][3]; public: Matrix3x3(); Matrix3x3(double a, double b, double c, double d, double e, double f, double g, double h, double i ); Vector3 operator*(Vector3 & v); friend ostream & operator<<(ostream &, Matrix3x3 &); friend class Vector3; }; |
Vector3.C |
---|
#include <iostream.h> #include "Matrix3x3.h" #include "Vector3.h" // constructor() Vector3::Vector3() { x[0] = 0; x[1] = 0; x[2] = 0; } // constructor(a,b,c) Vector3::Vector3(double a, double b, double c) { x[0] = a; x[1] = b; x[2] = c; } // Vector3 * Matrix3x3 operator Matrix3x3 Vector3::operator*(Matrix3x3 & X) { Matrix3x3 Z; int i, j; for (j = 0; j < 3; j = j + 1) for (i = 0; i < 3; i = i + 1) Z.A[i][j] = x[j] * X.A[i][j]; return Z; } // Output operator ostream & operator<<(ostream & cout, Vector3 & v) { int i; for (i = 0; i < 3; i=i+1) cout << v.x[i] << "\t"; cout << endl; return(cout); } |
Matrix3x3.h |
---|
#include <iostream.h> #include "Vector3.h" #include "Matrix3x3.h" // constructor() Matrix3x3::Matrix3x3() { int i, j; for (i = 0; i < 3; i = i + 1) for (j = 0; j < 3; j = j + 1) A[i][j] = 0; } // constructor(a,b,c,d,e,f,g,h,i) Matrix3x3::Matrix3x3(double a, double b, double c, double d, double e, double f, double g, double h, double i ) { A[0][0] = a; A[0][1] = b; A[0][2] = c; A[1][0] = d; A[1][1] = e; A[1][2] = f; A[2][0] = g; A[2][1] = h; A[2][2] = i; } // Matrix3x3 * Vector3 operator Vector3 Matrix3x3::operator*(Vector3 & v) { Vector3 z; int i, j; for (i = 0; i < 3; i=i+1) z.x[i] = 0; for (i = 0; i < 3; i=i+1) for (j = 0; j < 3; j=j+1) z.x[i] = z.x[i] + A[i][j]*v.x[j]; return z; } // Output operator ostream & operator<<(ostream & cout, Matrix3x3 & M) { int i, j; for (i = 0; i < 3; i=i+1) { for (j = 0; j < 3; j=j+1) cout << M.A[i][j] << "\t"; cout << endl; } return(cout); } |
main.C |
---|
#include |
Compile with:
CC main.C Vector3.C Matrix3x3.C |
(Or use separate compilation).