je pensais avoir trouvé mon bonheur avec le std::vector (d'ailleurs merci de m'avoir fait découvrir ça, ca a vraiment l'air d'etre utile)
mais cela ne fonctionne pas vraiment avec ma classe ligne, et je ne comprend pas pourquoi ....
j'ai trouvé qqs tuto et j'ai fait des tests avec des tableaux simples, j'arrive a modifier les élements sans problèmes, mais il y a un couac avec ma class:
Code :
- matrice::matrice( int n, int m)
- {
- nb_lignes=n;
- nb_colonnes=m;
- vector<ligne> mat(n,m);
- mat[2].modif(5,5);
- for (int i=0; i<n;i++)
- cout << "test " << mat[i] <<endl;
- }
|
ici par exemple, j'obtiens bien une matrice avec le nb de colonnes et de lignes voulu, mais dès que je veux modifier un élément, par exemple ici le 5ieme élément
de la 3ieme ligne, ce me modifie tous les éléments de la 5ème colonne, j'ai donc ceci pour une 5*10 :
test 0 0 0 0 5 0 0 0 0 0
test 0 0 0 0 5 0 0 0 0 0
test 0 0 0 0 5 0 0 0 0 0
test 0 0 0 0 5 0 0 0 0 0
test 0 0 0 0 5 0 0 0 0 0
alors que je devrais avoir puisque j'ai fait 'mat[2].modif(5,5)';
test 0 0 0 0 0 0 0 0 0 0
test 0 0 0 0 0 0 0 0 0 0
test 0 0 0 0 5 0 0 0 0 0
test 0 0 0 0 0 0 0 0 0 0
test 0 0 0 0 0 0 0 0 0 0
et 2ième chose, j'ai un beau message d'erreur à la fin du bloc d'instruction, du genre :
*** glibc detected *** ./a.out: double free or corruption (fasttop): 0x00000000017ed0a0 ***
c'est du à quoi ? peut etre parce que je n'ai pas encore fait de destructeur ?
et dernière petite chose (desolé ca commence a faire beaucoup )
j'ai déclaré un tableau dans la classe matrice, mais j'utilise vector dans le constructeur, comment faire en sorte de déclarer un vector dans la définition de la classe ? a moins que ce que j'ai fait ne pose pas de problèmes, c'est à dire déclarer le vector avec le nom du tableau définit dans la classe (ici 'mat')
merci en tout cas pour vos réponses