Bonjour,
dans mon programme j'ai deux classes template dans lesquelles les allocations mémoires sont générées dynamiquement :
Sc_DynamicVector<T> qui possède un T* array en attribut et Sc_DynamicMatrix<T> avec un attribut Sc_DynamicVector<T>* matrix.
Le bug survient à l'exécution (plantage de la console) quand j'essaie d'allouer un tableau de Sc_DynamicVector<T> afin de le passer au constructeur de Sc_DynamicMatrix<T>.
Voilà le code :
C'est seulement quand je décommente la partie tabVect[1]=*v1; tabVect[2]=*v1; que le programme plante.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 double tabtest[6]={10,9,8,7,6,1}; double tabtest2[6]={3,3,4,4,5,5}; Sc_DynamicVector<double> *v1=new Sc_DynamicVector<double>(6, tabtest); Sc_DynamicVector<double> *v2=new Sc_DynamicVector<double>(6, tabtest2); Sc_DynamicVector<double> *tabVect = new Sc_DynamicVector<double>[3]; tabVect[0]=*v1; tabVect[1]=*v1; tabVect[2]=*v1; Sc_DynamicMatrix<double> m1, m2(3, tabVect);
Si je n'alloue pas dynamiquement le tableau de Sc_DynamicVector<double>, c'est à la déclaration de m2 que ça plante.
Et le code des constructeurs (car le problème vient peut-etre aussi de là ) :
Si quelqu'un saurait me sortir de cette impasse (assez prise de tête quand même )...
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
27
28
29
30
31 template <class T> Sc_DynamicVector<T>::Sc_DynamicVector(unsigned int _size, T* _array) { size=_size; array=new T[size]; for(unsigned int i=0; i<size;i++){ array[i]=_array[i]; } } template <class T> Sc_DynamicMatrix<T>::Sc_DynamicMatrix() { size=1; mat=new Sc_DynamicVector<T>[size]; mat[0]=Sc_DynamicVector<T>(); } template <class T> Sc_DynamicMatrix<T>::Sc_DynamicMatrix(unsigned int _size, Sc_DynamicVector<T> * _mat) { size=_size; mat=new Sc_DynamicVector<T>[size]; for(unsigned int i=0;i<size;i++){ mat[i]=Sc_DynamicVector<T>(_mat[i]); } }
Partager