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;
}