Bonjour,
Débutant en C++, je fais un programme permettant d'effectuer des opérations de matrices, et je dois surcharger l'opérateur * pour permettre de multiplier deux matrices entre elles.
la classe de la matrice CMatrice contient 3 données membres :
nombre de lignes int m_nNlignes, nombre de colonnes int m_nNcolonnes, tableau 2D double** m_pTab.
Au moment d'exécuter, si m_nNlignes != m_nNcolonnes, le programme plante, en évoquant une violation d'accès...
Quelqu'un saurait-il d'où viens le problème?
Je précise que le programme ne rencontre pas de problème avec les autres fonctions (addition de matrices, multiplication par un scalaire, surcharge << et >>, etc.)
Merci d'avance! Si vous avez besoin d'autres morceaux de code je vous les fournirais bien sûr.
ma surcharge dans Matrice.cpp :
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
23
24
25
26 CMatrice CMatrice::operator*(const CMatrice& mat) { CMatrice resultat; if (m_nNcolonnes == mat.m_nNlignes) { CMatrice resultat(*this); resultat.m_nNcolonnes = mat.m_nNcolonnes; resultat.m_nNlignes = m_nNlignes; int m = m_nNlignes; for (int i = 0; i < resultat.m_nNlignes; i++) { for (int j = 0; j < resultat.m_nNcolonnes; j++) { resultat.m_pTab[i][j] = 0; for (int k = 0; k < m; k++) resultat.m_pTab[i][j] = resultat.m_pTab[i][j] + m_pTab[i][k] * mat.m_pTab[k][j]; } } } else cout << "Produit impossible : dimensions incompatibles" << endl; return resultat; }
Partager