[C++ Vecteur qui se re-initialise]

_gwada_ Messages postés 5 Date d'inscription vendredi 4 juin 2004 Statut Membre Dernière intervention 11 juin 2004 - 11 juin 2004 à 11:27
cs_alain34270 Messages postés 85 Date d'inscription mardi 11 février 2003 Statut Membre Dernière intervention 18 septembre 2005 - 12 juin 2004 à 17:49
Bonjours,

- j'ai un problème avec un pti projet pour une épreuve, j'ai une classe (Atelier) contentent un tableau de vecteur de type Roues4.
Cette class Roues4 est un class enfant d'une classe vehicule qui contient un vecteur d'entretient.

- j'arrive a utiliser le vecteur de Roues4 mais mon problème est que le vecteur de d'Entretien disparaît car mon véhicule meurt , je pers donc ces les valeur du vecteur d’entretien.

J'ai cherché et apres leur insertion ds le vecteur de roues4 mon objet roues4 appel son destructeur sans que je lui les demandé !!!! 8O

Le diagrame de class:


- n'etant pas expert en c++ je demande un pti coup de main pour trouver l'origine de cette erreur.

voici le bout de code de declaration des class:


class Atelier
{
private :
        vector < Roues4 > VehiculeR4;
        vector < Roues2 > VehiculeR2;
        vector < EntretienType > TabEntretienType;

protected :

public:
    Atelier();
    ~Atelier();
     };


class Vehicule
{
protected:
    	string numImma;
                int nbKmActuel;
                vector <Entretien> TabEntretien;

public :
Vehicule();
                Vehicule(string _numImma, int _nbKmActuel);
~Vehicule();
int GetNbKmActuel();
                int GetNbEntretiens();
                Entretien GetEntretien(int index);
                void AddEntretien(string unDate, string unCommentaire,  EntretienType unType);
                void AffEntretient();
};


mon probleme c'est que comme l'objet Roues4 meurt je perd le tableaux stockés(vecteur).
Je doit utiliser des pointeurs ?(simple question pour avancer)

Si vous souhaiter le code je le met en ligne.
Merci d'avance de m'aider

1 réponse

cs_alain34270 Messages postés 85 Date d'inscription mardi 11 février 2003 Statut Membre Dernière intervention 18 septembre 2005
12 juin 2004 à 17:49
Salut,

Si l'entretien se perd à la sortie de la fonction addEntretien, c'est à mon avis (mais je n'ai pas analysé à fond ton code) parce que tu passes l'objet EntretienType par valeur. il est donc détruit à la sortie. Tu devrais essayer de le passer par référence :

void AddEntretien(string unDate, string unCommentaire, EntretienType &unType);

je pense qu'il y a de bonnes chances que ça provienne de là.

a+
alain
0
Rejoignez-nous