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 :

multiple definition of operator<<...


Sujet :

C++

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 96
    Par défaut multiple definition of operator<<...
    Bonsoir tout le monde,

    j'ai un probleme sur lequel je m'arrache les cheveux desesperement!
    J'ai cette erreur dont je n'arrive pas a me debarasser et que je ne comprends absolument pas!


    multiple definition of operator<<(std::ostream &,enseignantcherch&);

    But: je veux afficher une instance de enseignantcherch avec <<;

    Voila mon code:

    fichier .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
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
     
    #include <iostream>
    #include <string>
    using namespace std;
    /*----------------------------------------------------------------------------*/
    /*                                                                            */  
    /*                     DEFINITION DE LA CLASSE ENSEIGNANT                     */
    /*                                                                            */
    /*----------------------------------------------------------------------------*/  
    class enseignant
    {
          private:
                  string nom;
                  string prenom;
                  string matiere1;
                  string tel;
                  static int nb;
          public:
                 enseignant(string n, string p, string mat, string t);
                 ~enseignant();
                 string get_nom();
                 string get_prenom();
                 string get_matiere();
                 string get_tel();
                 void inc_nb();
                 void dec_nb();
                 int get_nb();
                 virtual void affiche(ostream & f)=0;
    };
     
    /*----------------------------------------------------------------------------*/
    /*                                                                            */  
    /*               DEFINITION DE LA CLASSE ENSEIGNANT TEMPS PLEIN               */
    /*                                                                            */
    /*----------------------------------------------------------------------------*/  
     
    class enseignantTC:public enseignant
    {
          private:
                  string matiere2;
     
          public:
                 enseignantTC(string n, string p, string mat, string t, string mat2);
                 ~enseignantTC();
                 string get_matiere2();
                 void affiche(ostream & f);
    };
     
    /*----------------------------------------------------------------------------*/
    /*                                                                            */  
    /*               DEFINITION DE LA CLASSE ENSEIGNANT CHERCHEUR                 */
    /*                                                                            */
    /*----------------------------------------------------------------------------*/  
     
    class enseignantcherch:public enseignant
    {
          private:
                  string pole;
     
          public:
                 enseignantcherch(string n, string p, string mat, string t, string pole);
                 ~enseignantcherch();
                 string get_pole();
                 void affiche(ostream & f);
                 friend ostream & operator <<(ostream & sortie,enseignantcherch & t);
     
    };
     
    /*----------------------------------------------------------------------------*/
    /*                                                                            */  
    /*                            SURCHARGE DEE LOPERATEUR <<                     */
    /*                                                                            */
    /*----------------------------------------------------------------------------*/
     
     
     
    ostream & operator <<(ostream & sortie,enseignantcherch & t)
    {
            t.affiche(sortie);
            return sortie;
    };


    fichier .cpp (definition)

    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
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
     
    #include <iostream>
    #include <string>
    #include "enseignant.h"
    using namespace std;
    int enseignant::nb=0;
     
    /*----------------------------------------------------------------------------*/
    /*                                                                            */  
    /*                     DEFINITION DE LA CLASSE ENSEIGNANT                     */
    /*                                                                            */
    /*----------------------------------------------------------------------------*/  
    /*---constructeur---*/
    enseignant::enseignant(string n, string p, string mat, string t):nom(n),prenom(p),matiere1(mat),tel(t)
    {
     cout<<"Creat. enseignant abstrait: "<<this<<endl;
    };
    /*---destructeur---*/
    enseignant::~enseignant()
    {
     cout<<"Destruct. enseignant: "<<this<<endl;
    };
    /*---accesseur---*/
    string enseignant::get_nom(){return nom;};
    string enseignant::get_prenom(){return prenom;};
    string enseignant::get_matiere(){return matiere1;};
    string enseignant::get_tel(){return tel;};
    int enseignant::get_nb(){return nb;};
    void enseignant::inc_nb(){nb++;};
    void enseignant::dec_nb(){nb--;};
     
    /*----------------------------------------------------------------------------*/
    /*                                                                            */  
    /*               DEFINITION DE LA CLASSE ENSEIGNANT TEMPS PLEIN               */
    /*                                                                            */
    /*----------------------------------------------------------------------------*/  
     
    /*---constructeur---*/
    enseignantTC::enseignantTC(string n, string p, string mat, string t, string mat2):enseignant(n,p,mat,t),matiere2(mat2)
    {
     cout<<"Creat. enseignantTC: "<<this<<endl;
     inc_nb();
    };
    /*---destructeur---*/
    enseignantTC::~enseignantTC()
    {
     cout<<"Destruct. enseignantTC: "<<this<<endl;
     dec_nb();
    };
    /*---accesseur---*/
    string enseignantTC::get_matiere2(){return matiere2;};
    /*---affichage---*/
    void enseignantTC::affiche(ostream & f)
    {
        f<<"========== EnseignantTC: "<<endl;
        f<<"nom: "<<get_nom()<<", prenom:"<<get_prenom()<<endl;
        f<<"tel: "<<get_tel()<<endl;
        f<<"matiere1: "<<get_matiere()<<", matiere2: "<<matiere2<<endl;
        f<<"========================"<<endl;
    };
     
     
    /*----------------------------------------------------------------------------*/
    /*                                                                            */  
    /*               DEFINITION DE LA CLASSE ENSEIGNANT CHERCHEUR                 */
    /*                                                                            */
    /*----------------------------------------------------------------------------*/  
    /*---constructeur---*/
    enseignantcherch::enseignantcherch(string n, string p, string mat, string t, string pole):enseignant(n,p,mat,t),pole(pole)
    {
     cout<<"Creat. enseignantcherch: "<<this<<endl;
     inc_nb();
    };
    /*---destructeur---*/
    enseignantcherch::~enseignantcherch()
    {
     cout<<"Destruct. enseignantTC: "<<this<<endl;
     dec_nb();
    };
    /*---accesseur---*/
    string enseignantcherch::get_pole(){return pole;};
    /*---affichage---*/
    void enseignantcherch::affiche(ostream & f)
    {
        f<<"========== Enseignant_Chercheur: "<<endl;
        f<<"nom: "<<get_nom()<<", prenom:"<<get_prenom()<<endl;
        f<<"tel: "<<get_tel()<<endl;
        f<<"matiere1: "<<get_matiere()<<", pole: "<<pole<<endl;
        f<<"========================"<<endl;
    };


    et mon main:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    #include <iostream>
    #include <string>
    #include "enseignant.h"
    using namespace std;
     
    int main()
    {
    enseignantcherch t2("toto","albert","physique","06-00-00-21-02","anglais");
        cout<<t2;
        system("pause");
    };

    Svp help me please j'ai presque pu de cheveux!
    Merci a tous par avance!!

  2. #2
    Expert confirmé
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Par défaut
    Tu définies l'opérateur << dans le .h (il faudrait le faire dans le .cpp comme pour les autres fonctions )
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag :resolu: (en bas)

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 96
    Par défaut
    re,

    dabord merci pour ta reponse si rapide!

    J'avais deja fait ce que tu dis mais ca n'avait pas marché!!

    Je viens de reessayer ca n'a toujours pas marché! En revanche, et alors la je COMPRENDS PAS:
    J'ai fermé "devc++" puis reouvert et ca a fonctionné!!!!!!!!!!!!
    Ca fait 2heures que je ballade mes fonctions!
    je n'ai pas d'explication logique. J'ai fait un re-build a chque modif, je comprends pas!
    Le principale cest que ca marche!
    Merci encore!

  4. #4
    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 : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    je n'ai pas d'explication logique
    Parfois il n'y en a pas avec Dev-C++.

    PS : ceci n'est pas un troll, simplement un message subliminal sous-entendant qu'il existe mieux que Dev-C++ à l'heure actuelle (Code::Blocks, VS 2005 Express).

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

Discussions similaires

  1. problême de compilation: multiple definition
    Par Plomeg dans le forum C++
    Réponses: 2
    Dernier message: 22/11/2006, 09h17
  2. Réponses: 8
    Dernier message: 19/09/2006, 15h42
  3. Multiple definition
    Par vdumont dans le forum C++
    Réponses: 6
    Dernier message: 11/05/2006, 19h21
  4. [LG]Interfaces et multiples définitions
    Par fatt dans le forum Langage
    Réponses: 2
    Dernier message: 15/04/2004, 22h41
  5. multiple definition
    Par scorbo dans le forum C
    Réponses: 5
    Dernier message: 10/09/2003, 13h16

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