Constructeur de recopie

simo5266 Messages postés 13 Date d'inscription vendredi 28 octobre 2005 Statut Membre Dernière intervention 5 juillet 2008 - 16 mars 2006 à 14:13
vincemail Messages postés 79 Date d'inscription mardi 29 juillet 2003 Statut Membre Dernière intervention 8 décembre 2006 - 17 mars 2006 à 13:53
salut,

J'ai un petit probleme j'arrive pas a faire un constructeur de recopie d'une listes chainnées.

Merci de me repondre

6 réponses

vincemail Messages postés 79 Date d'inscription mardi 29 juillet 2003 Statut Membre Dernière intervention 8 décembre 2006
16 mars 2006 à 14:20
C'est quoi le code que tu as écrit pour l'instant ?
0
Gendal67 Messages postés 627 Date d'inscription mercredi 16 juin 2004 Statut Membre Dernière intervention 24 juillet 2011 2
16 mars 2006 à 20:18
Un constructeur de recopie d'une liste chainée??? C'est pas clair ça! Ou alors c'est moi (ce qui est fort possible aussi ^^) qui capte pas.
J'essaie de deviner ce que ça veut dire : tu as une classe A qui contient (au moins) 1 membre de type A* pour chainer les différentes instances d'objets A et tu veux insérer un constructeur de recopie dans ta classe?
Si c'est cela, je ne comprend pas l'utilité de spécifier que c'est pour une liste chainée...

class A {

public:

A();
virtual ~A();
A(const A& obj);

public:

A* next;
int nb;
}

int main() {

A a;
a.nb = 7;

A b(a);
}
0
simo5266 Messages postés 13 Date d'inscription vendredi 28 octobre 2005 Statut Membre Dernière intervention 5 juillet 2008
17 mars 2006 à 00:29
voila mon code mais le probleme que j'arrive pas a crée un constructeur de recopie merci de m'aidé

#include
#include<conio.h>
#include<string.h>
struct element
{
int contenu;
element * suivant;
};


class set_int
{
struct element * tete;
struct element * tmp;
int cmp;


public:
set_int();
set_int (set_int &);
~set_int();
void ajouter(int);
void afficher();
void premier();
};

set_int::set_int()
{
tete=NULL;
}

void set_int::afficher()
{
premier();
while (tmp!=NULL)
{
cout<<tmp->contenu<<"\t";
tmp=tmp->suivant;
}
set_int::~set_int()
{
premier();
while(tmp!=NULL)
{
delete tmp;
tmp=tmp->suivant;
}
}
void set_int::ajouter(int x)
{
int j,v,z;
element * p;
for (j=0;j<x;j++)
{
cout<<"saisir la valeur de T["<<j<<"] :";
cin>>v;
z=placer(v);
if(z==0)
{
p=new element;
p->contenu=v;
p->suivant=tete;
tete=p;
cmp++;
}
}
}
void set_int::premier()
{
tmp=tete;
}
0
Gendal67 Messages postés 627 Date d'inscription mercredi 16 juin 2004 Statut Membre Dernière intervention 24 juillet 2011 2
17 mars 2006 à 09:42
set_int(const set_int& x) {

this->tete = x.tete;
this->tmp = x.tmp;
this->cmp = c.cmp;
}

Et voilà
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
simo5266 Messages postés 13 Date d'inscription vendredi 28 octobre 2005 Statut Membre Dernière intervention 5 juillet 2008
17 mars 2006 à 12:32
salut ce n'est pas la bonne reponse dsl car cmp c'est un compteur, et il vous manq une boucle while ou for pour crée ts les element du chaines et tmp c'est une instance de tete.
0
vincemail Messages postés 79 Date d'inscription mardi 29 juillet 2003 Statut Membre Dernière intervention 8 décembre 2006
17 mars 2006 à 13:53
Moi je ferai une fonction récursive parcoure qui ressemblerai à ca:

set_int(const set_int& x) {
this->cmp = c.cmp;
this->tmp=parcoure(x.tmp);
this->tete = parcoure(x.tete);
}

element pourcoure (element)
{
element el;
el.contenu=element.contenu; // On copie le contenu
if (el.contenu!=null)
el.suivant=parcoure(element.suivant); // On copie l'élément suivant
return el; // On renvoie l'élément copié
}

Vince
0
Rejoignez-nous