Push_back modifie mes valeurs !

Résolu/Fermé
Crazy Legs Messages postés 635 Date d'inscription jeudi 10 avril 2008 Statut Membre Dernière intervention 27 septembre 2016 - 10 janv. 2011 à 18:36
Crazy Legs Messages postés 635 Date d'inscription jeudi 10 avril 2008 Statut Membre Dernière intervention 27 septembre 2016 - 13 janv. 2011 à 23:52
Bonsoir, j'ai créé un programme permettant de gérer des matrices. J'ai créé les classes Matrix et Ligne, elles fonctionnent très bien. Il ne me reste plus qu'à implémenter l'interface user-pc.
Pour contenir toutes les matrices que l'user aura créé, j'utilise un vecteur (à titre pédagogique) de Matrix.

Le problème est que dès que j'entre plus d'une matrice, les premières sont modifiées, seule la dernière est intacte et affiche ce qu'il faut.

Exemple :

vector<Matrix> vecMatrices;

Matrix mat(1,1); // Création d'une matrice de 1 ligne et de 1 colonne.
Matrix mat1(1,1);
Matrix mat2(1,1);

mat.setLigne(1, "1"); // A la ligne 1, la matrice a pour valeur : 1.
mat1.setLigne(1, "2"); // A la ligne 1, la matrice a pour valeur : 2.
mat2.setLigne(1, "3");

mat.afficher();
mat1.afficher();
mat2.afficher();

cout << "A" << endl; // Cette lettre permettra de bien distinguer les affichages.

vecMatrices.push_back(mat); // Ajout des matrices.
vecMatrices.push_back(mat1);
vecMatrices.push_back(mat2);

for(vector<Matrix>::const_iterator it = vecMatrices.begin() ; it < vecMatrices.end() ; it++)
{
    (*it).afficher();
}

cout << "B" << endl; // Idem


Affichage console :

1

2

3

A

1.49838e-038

1.49838e-038

3

B


Voilà, donc on voit bien que l'affichage fonctionne quand les matrices sont hors du vecteur, mais sont erronnée une fois entrées :S .

Merci pour votre aide :)

Si vous avez besoin de plus de détail sur mon code, n'hésitez pas. (un peu long).


1 réponse

Crazy Legs Messages postés 635 Date d'inscription jeudi 10 avril 2008 Statut Membre Dernière intervention 27 septembre 2016 98
13 janv. 2011 à 23:52
J'ai finalement trouvé grâce à un autre forum.
C'était la surcharge de l'opérateur = de la classe Ligne qui faisait tout bugger.
Merci quand même.
0