Bug sur une allocation dynamique de tableau
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 :
Code:
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); |
C'est seulement quand je décommente la partie tabVect[1]=*v1; tabVect[2]=*v1; que le programme plante.
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à :roll:) :
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 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]);
}
} |
Si quelqu'un saurait me sortir de cette impasse (assez prise de tête quand même :?)...