begin process at 2012 05 29 15:28:16
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Débutant(e)

 > 

permuter class avec pointeur this


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

permuter class avec pointeur this

samedi 29 décembre 2007 à 23:16:26 | permuter class avec pointeur this

sakjimh

salut,
j'ai creer une classe "personne" (voir si dessous) et une methode qui permute deux personne mais le resultat reste incorrecte malgré que j'ai bien mis un passage par parametre pouvez vous m'expliquer le probleme
merci;


class personne
{
private:
    char* nom;
    char* prenom;
    Date dn;
public:
    personne()
    {
        nom=new char[20];
        prenom=new char[20];
    }
    ~personne()
    {
        delete[] nom;
        delete[] prenom;
    }
    void saisir();
    void afficher();
    void permuter(personne&);
    bool comparer(personne);

};

void personne::permuter(personne& x)
{
    personne aux;
    aux=x;
    x=*this;
    *this=aux;
}
samedi 29 décembre 2007 à 23:39:34 | Re : permuter class avec pointeur this

SAKingdom

Membre Club
Réponse acceptée !
aux=x;
appel au constructeur de copie.
nom et prenom de aux pointe sur le nom et prenom de x
*this=aux;
appel au constructeur de copie. Les pointeurs de ta classe pointe maintenant à la même place que ceux de aux, c'est à dire, sur les zones mémoire de x.

}

appel du destructeur.
On supprime la mémoire des pointeur nom et prenom de aux. Ce sont les zones mémoire de x et ceux sur lesquels pointe les pointeur de ta classe aussi.
Résultat, ta classe plus x ne pointe sur plus rien de valide.


C++ (@++)

dimanche 30 décembre 2007 à 22:26:09 | Re : permuter class avec pointeur this

sakjimh

oui merci pour l'explication mais y'a t'il une solution pratique pour se genre de probleme?
lundi 31 décembre 2007 à 10:02:28 | Re : permuter class avec pointeur this

DeAtHCrAsH

Pour ma part j'aurai surcharger l'opérateur "=" puis dans le main je me serai déclaré une variable "Personne * temp = new Personne();" qui m'aurait permis de faire la permutation.

Shell
lundi 31 décembre 2007 à 11:28:35 | Re : permuter class avec pointeur this

vecchio56

Administrateur CodeS-SourceS
Pour ma part j'aurais utilisé string à la place de char*, les chaines seront recopiés automatiquement

_____________________________________
Un éditeur de ressources gratuit pour Windows

lundi 31 décembre 2007 à 17:03:11 | Re : permuter class avec pointeur this

SAKingdom

Membre Club
Réponse acceptée !
Ben moi j'aurais fais:
void personne::permuter(personne& x)
{
    char *tmp = x.nom;
    x.nom = nom; nom = tmp;
    tmp = x.prenom;
    x.prenom = prenom; prenom = tmp;
}

Je n'est pas tenue compte de Date volontairement, car j'ignore ce que c'est.

C++ (@++)

lundi 31 décembre 2007 à 23:40:22 | Re : permuter class avec pointeur this

sakjimh

merci les amis pour l'aide et l'explication!!


Cette discussion est classée dans : class, void, char, prenom, permuter


Répondre à ce message

Sujets en rapport avec ce message

Elle est ou l'erreur ?? [ par kgadhi ] Bonsoir tous le monde et merci pour votre aide,j'essaye de m'entrainer à la programmation orientée objet en C/C++ mais la j'ai un petit probleme:virtu un pti prob ... :s help [ par meksoft002 ] Bonjour, c'est ma première participation en vue que vous pourrez resoudre mon problème ..voila...je vouderais mettre en oeuvre un tableau d'objets "pe Tri file [ par kakitn ] salut, j'ais une file (liste simplement chainée) de candidats, chaque candidats est identifié par un nom, prenom, genre et un score. je veux ecrire un Pb de choix de classe [ par abdoulax ] Bon voici mon probleme : #include class test; void appel(test * obj); class test {     public:         int a;     &nbs Erreur template [ par RaphAstronome ] Bonjour,J'ai un probleme avec Dev-c++ (GCC) Lorsque je complie ça (il ce trouve dans le .h) et aucune instruction ne le précéde :#ifndef _TRANSLATE_H_ exercice en c [ par noel46 ] bonjour voici mon programme qui demande nom, prenom, sexe et date et doit faire ensuite 140186JOBNATsi une fille né le 14 janvier 1984; JOBE Nataliej' comparaison entre 2 fonctions [ par cyss ] Est-ce que ces 2 fonctions sont equivalentes?void f1(char *t){    if (t!=0)    {        while(*t!=0)        {            cout            t++;        } La class string [ par jderf ] Je suis débutant et je teste la class string. Voici un code tous simple, mais y'a un probleme de conversion à la compil que je ne comprend pas. Les er aide en c/c++ gestion classe [ par moussadjijunior ] Bonjour à tous J'oses croire que vous allez tous bien et que vos familles ne manque de rien.Je viens aujourd'hui auprés de vous car j'ai u probleme av


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,217 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales