Multiplication de matrices : "violation d'accès"
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:
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;
} |