Bonjour
J'ai deux classes CHeisenbergSpin et CHeisenbergSpinEx d�rivant de CHeisenbergSpin et l'exemple de code suivant
D�s que le 2�me indice du tableau est non nul �a g�n�re une exception.
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);
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
Les lignes 3 et 4 g�n�rent une exception.
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);
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
Partager