|
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).