Constructeur de recopie

Signaler
Messages postés
13
Date d'inscription
vendredi 28 octobre 2005
Statut
Membre
Dernière intervention
5 juillet 2008
-
Messages postés
79
Date d'inscription
mardi 29 juillet 2003
Statut
Membre
Dernière intervention
8 décembre 2006
-
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

Messages postés
79
Date d'inscription
mardi 29 juillet 2003
Statut
Membre
Dernière intervention
8 décembre 2006

C'est quoi le code que tu as écrit pour l'instant ?
Messages postés
627
Date d'inscription
mercredi 16 juin 2004
Statut
Membre
Dernière intervention
24 juillet 2011

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);
}
Messages postés
13
Date d'inscription
vendredi 28 octobre 2005
Statut
Membre
Dernière intervention
5 juillet 2008

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;
}
Messages postés
627
Date d'inscription
mercredi 16 juin 2004
Statut
Membre
Dernière intervention
24 juillet 2011

set_int(const set_int& x) {

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

Et voilà
Messages postés
13
Date d'inscription
vendredi 28 octobre 2005
Statut
Membre
Dernière intervention
5 juillet 2008

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.
Messages postés
79
Date d'inscription
mardi 29 juillet 2003
Statut
Membre
Dernière intervention
8 décembre 2006

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