Bonjour
J'ai deux classes CHeisenbergSpin et CHeisenbergSpinEx d�rivant de CHeisenbergSpin et l'exemple de code suivant

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
int nStartSize = 3;
double dblPI = CTools::PI;
CHeisenbergSpin **pSpin;
pSpin = (CHeisenbergSpin**)new CHeisenbergSpinEx*[nStartSize];
for (int nIndex = 0; nIndex < nStartSize; nIndex++)
{
	pSpin[nIndex] = new CHeisenbergSpinEx[nStartSize];
	for (int i = 0; i < nStartSize; i++)
		pSpin[nIndex][i].z = 1;
}
pSpin[0][0].Compute(dblPI / 3, dblPI);
pSpin[0][1].Compute(dblPI / 2, dblPI / 3);
pSpin[2][0].Compute(dblPI / 2, dblPI / 3);
pSpin[2][1].Norm();
pSpin[2][2].Compute(dblPI / 2, dblPI / 3);
CHeisenbergSpinEx spinEx = *((CHeisenbergSpinEx*)&pSpin[2][2]);
spinEx.Compute(dblPI / 2, dblPI/3);
D�s que le 2�me indice du tableau est non nul �a g�n�re une exception.
j'ai remarqu� que cela se produit lorsqu'on que la m�thode appel�e est surcharch�e (Compute est surcharg�e par la classe d�riv�e)
bien �videmment la ligne 17 fonctionne sans probl�me.

J'ai �galement test� le code suivant

Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
CHeisenbergSpin *pSpin = new CHeisenbergSpinEx[nStartSize];
pSpin[0].Compute(dblPI / 2, dblPI / 3);
pSpin[1].Compute(dblPI / 3, dblPI);
pSpin[2].Compute(dblPI, dblPI);
Les lignes 3 et 4 g�n�rent une exception.

Pourquoi est ce que les objets � ces positions g�n�rent une excption
Est ce qu'il y a un moyen d'appeller les fonctions surcharg�es sans faire un cast explicite

J'esp�re que j'ai �t� assez clair
Merci d'avance pour toute aide