tableau de classe dans une autre classe ? [C++] - C++ - Programmation
Marsh Posté le 27-12-2010 à 07:40:33
new, delete etc ...
Marsh Posté le 27-12-2010 à 13:14:54
bon j'ai essayé ça :
Code :
|
et comme on pouvait s'en douter, c'est la meme ligne pour toute la matrice, des que je modifie une valeur sur une ligne, la modification est effective pour toutes les autres.
on ne peut pas utiliser directement le constructeur de la classe ligne ici ? il faut pour ainsi dire le refaire dans le constructeur de la classe matrice ?
merci
Marsh Posté le 27-12-2010 à 14:16:52
dindon_sauvage a écrit : bon j'ai essayé ça :
|
Dote ta class ligne d'une methode resize qui redimensionne ta ligne et appelle cette methdoe dans ta boucle.
Ou utilise std::vector ...
Sinon, la maniere efficace d'allouer une matrix : http://codepad.org/nDy8z2iG
Marsh Posté le 28-12-2010 à 05:07:58
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 :
|
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
Marsh Posté le 28-12-2010 à 10:32:37
un truc genre
Code :
|
fonctionne proprement.
Je te conseille de regarder la surcharge de l'operateur[] pour pouvori ecrire matrice[i][j] au lieu d'avoir modif/acces
Marsh Posté le 28-12-2010 à 14:19:31
je n'avais pas pensé a revoir complétement le programme, mais maintenant je vais me forcer a utiliser des vector, c'est simple d'utilisation et tres pratique ... mon prof n'en avait malheureusement pas parlé du tout.
merci beaucoup en tout cas !
Marsh Posté le 28-12-2010 à 20:26:48
dindon_sauvage a écrit : |
ca ne m'etonnes guère ...
Marsh Posté le 27-12-2010 à 02:49:12
j'ai un petit problème dans un de mes exos, il faut faire un tableau d'une classe dans une classe diffèrente, et je n'arrive pas du tout a définir ce tableau.
j'ai d'abord crée la classe ligne avec un constructeur pour allouer un tableau de la taille voulue, ensuite le but de l'exo est de definir une classe matrice, en y allouant un tableau de classe lignes ... et je n'y arrive malheureusement pas
voici la définition de mes classes:
j'en suis a la création du constructeur de 'matrice'
mais voila, je ne vois pas comment faire pour un tableau de classe ... quand c'est pour utiliser une classe dans une autre classe, je vois comment cela fonctionne et je sais le faire, mais la, j'ai vraiment besoin de vos lanternes
merci d'avance
Message édité par dindon_sauvage le 27-12-2010 à 02:49:58