Bonjour à tous,

J'ai fait une classe matrice et j'ai surchargé l'opérateur * afin de multiplier 2 matrices, le voilà :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
matrice matrice::operator*(const matrice &m1)
{
 matrice result(ligne,m1.colonne);
 
 if(colonne == m1.ligne) // si nb colonnes = nb lignes de l'autre matrice
 {
  for(int i=0;i<ligne;i++) //pour chaque ligne
  {
   for(int j=0;j<m1.colonne;j++) // pour chaque colonne
   {
    for(int k=0;k<colonne;k++) // produit scalaire
     result.mat[i][j] += mat[i][k]*m1.mat[k][j];
   }
  }
 }
 else
 {
  cout<<"Matrices incompatibles,operation impossible !"<<endl;
 }
 
   return result;
}


J'ai également surchargé l'opérateur << d'affichage qui marche très bien (je l'ai testé), mais quand je fais :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
cout<<"m1 * m2 = "<<(m1*m2)<< endl;
cout<<endl;*/
Rien ne s'affiche. J'ai essayé plusieurs choses, mais je n'arrive pas à comprendre pourquoi cela ne veut pas marcher !

J'ai fait une surcharge de l'opérateur = :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
matrice &matrice::operator=(matrice &m1)
// Affectation d'une matrice à une autre
{
 int i,j;
 
 if(&m1 != this)
 {
  for(i=0;i<ligne;i++)
  {
   for(j=0;j<colonne;j++)
   {
    mat[i][j] = m1.mat[i][j];
   }
  }  
 }
 else
 {
  cout << "(matrice) Erreur d\'affectation !" << endl;
 }
 return *this;
}
et mon constructeur initialise à 0 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
matrice::matrice(int lig, int col)
// constructeur
{
 for (int i=0;i<lig;i++)
 {
  for (int j=0;j<col;j++)
  {
   mat[i][j]=0;
  }
 }
 
 ligne   = lig;
 colonne = col;
}
mais ce qui est bizare c'est que quand je fais un affichage dans ma fonction * juste avant le return, ça me met bien la matrice attendue.

Merci d'avance pour votre aide.

Ajout des balises [code] par khayyam90