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 :

Surcharge op�rateur C++


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    bm
    bm est d�connect�
    Membre extr�mement actif

    Homme Profil pro
    Freelance
    Inscrit en
    Octobre 2002
    Messages
    874
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Dr�me (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : Freelance
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Octobre 2002
    Messages : 874
    Billets dans le blog
    6
    Par d�faut Surcharge op�rateur C++
    Bonjour ,

    Quand j'impl�mente dans main() :

    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
    #include <iostream>
    #include <string>
    #include "Duree.h"
     
    using namespace std;
     
    int main(){
     
        Duree duree1(0, 10, 28), duree2(0, 10, 28);
        if(duree1 == duree2)
    {
         std::cout << "Les deux durees sont egales !" << std::endl;
    }
     
        return 0;
     
    }
    ERREUR :

    ||=== Build: default in Console application (compiler: GNU GCC Compiler) ===|
    main.cpp|| r�f�rence ind�finie vers � operator==(Duree const&, Duree const&) �|
    ||=== Build failed: 1 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|

    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
    #ifndef DUREE_H_INCLUDED
    #define DUREE_H_INCLUDED
     
    class Duree
    {
        public:
        Duree(int heures = 0, int minutes = 0, int secondes = 0);
     
        private:
        int m_heures;
        int m_minutes;
        int m_secondes;
    };
     
    bool operator==(Duree const& a, Duree const& b);
     
    #endif // DUREE_H_INCLUDED

    QUESTION : O� placer bool operator ?


  2. #2
    R�dacteur/Mod�rateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 153
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 38
    Localisation : Canada

    Informations professionnelles :
    Activit� : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 153
    Billets dans le blog
    4
    Par d�faut
    C'est une erreur de link.
    Tu d�clares une fonction et ne l'impl�mentes pas.
    Il faut impl�menter ton op�rateur == sinon il risque pas de le trouver.. si la question est "o�", peu importe tant que le linker peut le trouver.
    Pensez � consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation r�seau ?
    Aucune aide via MP ne sera dispens�e. Merci d'utiliser les forums pr�vus � cet effet.

  3. #3
    bm
    bm est d�connect�
    Membre extr�mement actif

    Homme Profil pro
    Freelance
    Inscrit en
    Octobre 2002
    Messages
    874
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Dr�me (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : Freelance
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Octobre 2002
    Messages : 874
    Billets dans le blog
    6
    Par d�faut
    if(duree1 == duree2) // impl�ment de " == bool op�rateur "

    Si j'ajoute ceci :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    bool operator==(Duree const& a, Duree const& b)
    {
        //Teste si a.m_heure == b.m_heure etc.
        if (a.m_heures == b.m_heures && a.m_minutes == b.m_minutes && a.m_secondes == b.m_secondes)
            return true;
        else
            return false;
    }
    ||=== Build: default in Console application (compiler: GNU GCC Compiler) ===|
    main.cpp|| d�finitions multiples de � operator==(Duree const&, Duree const&) �|
    .objs/RPG/Duree.cpp|| d�fini pour la premi�re fois ici|
    ||=== Build failed: 2 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|

    Je vais sauter cette surcharge qui est tr�s mal expliqu�e dans ce tuto de ooCLROOM



    Quoi changer dans le cpp ?

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    #include "Duree.h"
     
    Duree::Duree(int heures, int minutes, int secondes) : m_heures(heures), m_minutes(minutes), m_secondes(secondes)
     
    {
     
    }

  4. #4
    Expert confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2005
    Messages
    5 508
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 5 508
    Par d�faut
    A premi�re vue, tu as la d�finition de l'op�rateur == dans main.cpp et dans Duree.cpp.
    Faut choisir.

  5. #5
    R�dacteur/Mod�rateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 153
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 38
    Localisation : Canada

    Informations professionnelles :
    Activit� : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 153
    Billets dans le blog
    4
    Par d�faut
    *boule de crystal, � boule de crystal, r�v�le-moi l'erreur par magie*
    Tu l'aurais pas impl�ment� dans le header par hasard ?
    Pensez � consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation r�seau ?
    Aucune aide via MP ne sera dispens�e. Merci d'utiliser les forums pr�vus � cet effet.

  6. #6
    bm
    bm est d�connect�
    Membre extr�mement actif

    Homme Profil pro
    Freelance
    Inscrit en
    Octobre 2002
    Messages
    874
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Dr�me (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : Freelance
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Octobre 2002
    Messages : 874
    Billets dans le blog
    6
    Par d�faut
    Avec les fichiers sources je vais revoir �tape par �tape.
    Cela double le temps et c'�tait pas pr�vu au d�but ..



    [R�solu]

    C'est la d�claration dans la class Duree "estEgal" que ne trouve pas
    le compilateur ..

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    class Duree
    {
        public:
     
        Duree(int heures = 0, int minutes = 0, int secondes = 0);
        bool estEgal(Duree const& b) const;  //  <---- Meuh
        ...

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. R�ponses: 11
    Dernier message: 15/12/2006, 16h14
  2. Surcharge op�rateur +
    Par nunurs83 dans le forum C++
    R�ponses: 6
    Dernier message: 31/10/2006, 09h48
  3. [D�butant]Surcharge op�rateur +
    Par Geolem dans le forum D�buter
    R�ponses: 13
    Dernier message: 05/12/2005, 10h16
  4. surcharge op�rateur << et >>
    Par Azharis dans le forum D�buter
    R�ponses: 11
    Dernier message: 02/11/2005, 21h22
  5. Surcharge op�rateurs
    Par ghostdogpr dans le forum C++
    R�ponses: 5
    Dernier message: 18/03/2005, 11h51

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