IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Problème surcharge comparaison


Sujet :

C++

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    231
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 231
    Points : 75
    Points
    75
    Par défaut Problème surcharge comparaison
    BOnjour,

    Toujours dans le cadre d'un projet à rendre je dois effectuer un operateur == pour une classe appelé personnel

    Je codes donc ma classe comme suite
    personnel.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    #ifndef _personnel_H
     
    #define _personnel_H
     
    #include <iostream>
    using namespace std;
     
     
    //classe personnel
     
    class personnel {
     
    	protected:
    	//reservation de nom pour les chars
     
    	char *nom;
     
    	char *prenom;
     
    	int  tel;
     
     
     
    	public:
    	//constructeur par défaut
    	personnel();
     
    	//constructeur personnel
     
    	personnel(char* ,char* ,int);
    	//destructeur
    	~personnel();
    	//modifie le numéro de téléphone
    	int modiftel(int);
    	//verifie si la personne passé en paramètre est identique à l'objet cible
    	bool operator ==(const personnel &);
    	//permet l'affectation
    	void operator = (  personnel &);
    	//affiche 
     
        	friend ostream & operator << (ostream &, const personnel &);
    	//saisie
     
    	friend istream & operator >> (istream &, personnel &);
     
    };
    #endif
    La définition de la surcharge operateur ==
    personnel.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    bool Personne::operator==(const Personne& p)
     
    {
     
    	if(strcmp(this->nom, p.nom) == 0)
     
    		if(strcmp(this->prenom, p.prenom) == 0)
     
    			if(this->tel == p.tel)
     
    				return true;
     
    	return false;
     
    }
     
     
     
    void Personne::operator=(const Personne& p)
     
    {
     
    	this->nom	 = p.nom;
     
    	this->prenom = p.prenom;
     
    	this->tel	 = p.tel;
     
    }
    Je fais un test comme ceci:
    main.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    int main()
    {
     
    	//constructeur spécialisé
    	personnel p1("coudou","ben",223);
     
    	//on teste la modification du num tel
    	p1.modiftel(456);
     
    	personnel p2("coudou","ben",345);
    	//on compare en testant la surcharge
     
    	if (p1 == p2)
    	{
    		cout << "p1==p2" ; 
    	}
    	else
    	{
    		cout << "p1!= p2";	
    	}
     
    }

    Le problème est que cela ne m'affiche pas de résultat. Je n'ai rien à l'affichage alors qu'il devrait afficher p1!=p2!!

    Je compares pourtant deux objets.

    Où est je fais un erreur????

    Je vous remercie d'avance pour votre aide.

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Ajoute un std::endl ou un std::flush pour forcer l'affichage (les flux C++ sont bufferisés).

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    231
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 231
    Points : 75
    Points
    75
    Par défaut
    ok merci mais où dois je l'afficher?? un peu débutant un c

  4. #4
    Membre averti
    Avatar de Neo41
    Inscrit en
    Janvier 2003
    Messages
    241
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 241
    Points : 403
    Points
    403
    Par défaut
    Citation Envoyé par skyangel
    ok merci mais où dois je l'afficher?? un peu débutant un c
    Ca va s'afficher dans la console DOS normalement.
    "Don't think you are, know you are..." (Morpheus)

  5. #5
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if (p1 == p2)
    {
        cout << "p1==p2" << endl ; 
    }
    else
    {
        cout << "p1!= p2" << endl;	
    }

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    231
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 231
    Points : 75
    Points
    75
    Par défaut
    ah oui ok je connaissais mais c'était votre écriture std::endl qui m'a destabiliser .

    J'ai testé mais ca ne donne pas plus d'affichage à l'écran

  7. #7
    Membre averti
    Avatar de Neo41
    Inscrit en
    Janvier 2003
    Messages
    241
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 241
    Points : 403
    Points
    403
    Par défaut
    Ca doit être la console qui disparaît tout de suite après le run.
    Essayes de mettres un getch() ou n'importe quoi qui bloquerait la sortie du programme pendant un temps.
    "Don't think you are, know you are..." (Morpheus)

  8. #8
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Alors tu as peut-être un crash (utilise le débogueur !), ce qui ne m'étonnerait pas vu la manière dont tu utilises les char*
    Pourquoi pas std::string pour les chaînes de caractères ?

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    231
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 231
    Points : 75
    Points
    75
    Par défaut
    Citation Envoyé par Neo41
    Ca doit être la console qui disparaît tout de suite après le run.
    Essayes de mettres un getch() ou n'importe quoi qui bloquerait la sortie du programme pendant un temps.
    désolé mais je connais pas le getch!
    je vais tenter le n importes quoi

    Je code sous linux pour info donc avec un éditeur et la console

    Citation Envoyé par Laurent Gomila
    Alors tu as peut-être un crash (utilise le débogueur !), ce qui ne m'étonnerait pas vu la manière dont tu utilises les char*
    Pourquoi pas std::string pour les chaînes de caractères ?
    pourquoi pas string ? je connais que la méthode char et le prof veut qu'on fasse comme ca

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    231
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 231
    Points : 75
    Points
    75
    Par défaut
    Merci de votre aide en tout cas

  11. #11
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 064
    Points : 1 053
    Points
    1 053
    Par défaut

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    231
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 231
    Points : 75
    Points
    75
    Par défaut
    euh non c'est pas résolu ce problème je n'ai toujours rien à l'affichage et je ne trouves toujours pas

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    231
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 231
    Points : 75
    Points
    75
    Par défaut
    j ai redemarre et ca fonctionne

  14. #14
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 275
    Points : 10 985
    Points
    10 985
    Par défaut
    Citation Envoyé par skyangel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    void Personne::operator=(const Personne& p)
    {
    	this->nom	 = p.nom;
    	this->prenom = p.prenom;
    	this->tel	 = p.tel;
    }
    Ka-boum à termes -- grâce aux char*.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 23/03/2006, 12h39
  2. Réponses: 11
    Dernier message: 22/03/2006, 21h57
  3. problème de comparaison table dans requète.
    Par Sendo dans le forum Access
    Réponses: 8
    Dernier message: 09/03/2006, 11h10
  4. Problème de comparaison (chez lycos)
    Par Tuscelan dans le forum Langage
    Réponses: 4
    Dernier message: 10/11/2005, 18h13
  5. Problème de comparaison de dates
    Par MiJack dans le forum Langage SQL
    Réponses: 2
    Dernier message: 12/03/2004, 21h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo