void affiche () ;
} ;
et la déclaration de la classe mat :
/* fichier mat1.h */
class vect ; // pour pouvoir compiler la déclaration de matrice
class matrice
{
double mat[3] [3] ; // matrice 3 X 3
public :
matrice () ; // constructeur avec initialisation à zéro
matrice (double t [3] [3] ) ; // constructeur à partir d'un tableau
// 3 x 3
friend vect prod (const matrice &, const vect &) ; // fonction amie
// indépendante
} ;
Nous avons déclaré constants les arguments de la fonction vect, ce qui nous protège
d'une éventuelle faute de programmation dans les instructions de cette fonction. Dans ce
cas, la fonction pourra être appelée avec en arguments effectifs non seulement des
objets constants, mais aussi des expressions d'un type susceptible d'être converti dans
le type voulu (comme on le verra dans le chapitre relatif aux conversions définies par
l'utilisateur).
La définition des fonctions membre (en fait affiche) de la classe vect ne présente pas de
difficultés :
#include "vect1.h"
#include
using namespace std ;
void vect::affiche ()
{ int i ;
for (i=0 ; i<3 ; i++) cout << v[i] << " " ;
cout << "\n" ;
}
Il en va de même pour les fonctions membre (en fait le constructeur) de la classe mat :
#include "mat1.h"
#include
using namespace std ;
matrice::matrice (double t [3] [3])
{
int i ; int j ;
for (i=0 ; i<3 ; i++)
for (j=0 ; j<3 ; j++)
mat[i] [j] = t[i] [j] ;
}
La définition prod nécessite les fichiers contenant les déclarations de vect et de mat :
#include "vect1.h"
#include "mat1.h"
vect prod (const matrice & m, const vect & x)
193
} ;
et la déclaration de la classe mat :
/* fichier mat1.h */
class vect ; // pour pouvoir compiler la déclaration de matrice
class matrice
{
double mat[3] [3] ; // matrice 3 X 3
public :
matrice () ; // constructeur avec initialisation à zéro
matrice (double t [3] [3] ) ; // constructeur à partir d'un tableau
// 3 x 3
friend vect prod (const matrice &, const vect &) ; // fonction amie
// indépendante
} ;
Nous avons déclaré constants les arguments de la fonction vect, ce qui nous protège
d'une éventuelle faute de programmation dans les instructions de cette fonction. Dans ce
cas, la fonction pourra être appelée avec en arguments effectifs non seulement des
objets constants, mais aussi des expressions d'un type susceptible d'être converti dans
le type voulu (comme on le verra dans le chapitre relatif aux conversions définies par
l'utilisateur).
La définition des fonctions membre (en fait affiche) de la classe vect ne présente pas de
difficultés :
#include "vect1.h"
#include
using namespace std ;
void vect::affiche ()
{ int i ;
for (i=0 ; i<3 ; i++) cout << v[i] << " " ;
cout << "\n" ;
}
Il en va de même pour les fonctions membre (en fait le constructeur) de la classe mat :
#include "mat1.h"
#include
using namespace std ;
matrice::matrice (double t [3] [3])
{
int i ; int j ;
for (i=0 ; i<3 ; i++)
for (j=0 ; j<3 ; j++)
mat[i] [j] = t[i] [j] ;
}
La définition prod nécessite les fichiers contenant les déclarations de vect et de mat :
#include "vect1.h"
#include "mat1.h"
vect prod (const matrice & m, const vect & x)
193
