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 function


Sujet :

C++

  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2004
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 116
    Par défaut multiple definition of function
    Voila j'ai un petit probleme :
    j'ai mon .h ou sont définit mes fonctions comme suit :
    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
     
    #include <vector>
    #include <map>
    #include "class_base.h"
    #ifndef _CLASS_ATTRIBUT_H
    #define _CLASS_ATTRIBUT_H
    class ATTRIBUT{
     
    private :
        // Nom de la colonne attribut
        string nom;
        // Valeur que l'on mettra par défaut si  on insere une donnée vide
    	BASE * valeur_defaut;
    	// Défini le type de donnée que l'ont va stocker
    	string type;
    	// Défini si la colonne n'admet que des données uniques.
    	bool unique;
    	// Défini si la colonne n'admet que des données non nulle.
    	bool not_null;
    	// Défini si on utilise un index de recherche.
    	bool index;
    	// Notre index de recherche
    	map<string,vector<int> > tab_index;
    	// Notre tableau de valeurs
        vector<BASE *> valeurs;
     
     
    public :
     
        // Constructructeurs
    	ATTRIBUT(const ATTRIBUT &);
    	ATTRIBUT(string,string,bool,bool,bool,BASE *);
     
        //  Accesseurs
        void Afficher();
        void Afficher_Valeur(int);
     
        void Set_Nom(string);
    	string Get_Nom();
     
    	void Set_Type(string);
    	string Get_Type();
     
    	void Set_Defaut(BASE *);
    	BASE * Get_Defaut();
     
    	void Set_Unique(bool);
    	bool Get_Unique();
     
     
        void Set_Index(bool);
    	bool Get_Index();
     
    	void Set_Not_null(bool);
    	bool Get_Not_null();
     
     
        void Suppr(int);
        void Ajout(BASE *);
        void Ajout();
    	void Modif(int i,BASE *);
    	vector<int> Egal(BASE *);
    	vector<int> Superieur(BASE *);
    	vector<int> Inferieur(BASE *);
    	vector<int> Different(BASE *);
    string Get_Valeur(int);
     
        void Charger_Att(string)
        {// amuse toi avec les fichiers;
        }
        void Ecrire_Att(){// amuse toi avec les fichiers;
        }
        ~ATTRIBUT();
    };
     
     
     
    #endif
    et mon .cpp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    #include "class_attribut.h"
        void ATTRIBUT::Set_Nom(string sNom){nom=sNom;}
    	string ATTRIBUT::Get_Nom(){return  nom;}
     
     
    	string ATTRIBUT::Get_Valeur(int ligne){}
    par exemple et donc il me sort multiple definition of Set_Nom(string) et pour toutes les autres fonctions je ne comprends pas

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    73
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 73
    Par défaut
    salut j'avait le meme genre d'erreur sous visual studio et sa venait de mes include. Voila j'éspère que cela pourra t'aider

  3. #3
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 69
    Par défaut
    Je vais peut etre dire une betise mais les #ifndef et #define ne devraient pas etre placés avant les #include ??? Je sais pas si ca joue mais je n'avait jamais vu cet ordre la avant

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    366
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 366
    Par défaut
    que ce passe t il si tu encapsule le tout sous un namespace toto { ... }; ?

  5. #5
    Membre confirmé
    Inscrit en
    Décembre 2004
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 116
    Par défaut
    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
    Linking console executable: E:\PROJET FINAL 2007-2\console.exe
    .objs\class_attribut.o:class_attribut.cpp:(.text+0x100): multiple definition of `ATTRIBUT::ATTRIBUT(ATTRIBUT const&)'
    .objs\main.o:main.cpp:(.text+0x100): first defined here
    .objs\class_attribut.o:class_attribut.cpp:(.text+0x1e20): multiple definition of `ATTRIBUT::ATTRIBUT(ATTRIBUT const&)'
    .objs\main.o:main.cpp:(.text+0x1e20): first defined here
    .objs\class_attribut.o:class_attribut.cpp:(.text+0x3b40): multiple definition of `ATTRIBUT::ATTRIBUT(std::string, std::string, bool, bool, bool, BASE*)'
    .objs\main.o:main.cpp:(.text+0x3b40): first defined here
    .objs\class_attribut.o:class_attribut.cpp:(.text+0x4604): multiple definition of `ATTRIBUT::ATTRIBUT(std::string, std::string, bool, bool, bool, BASE*)'
    .objs\main.o:main.cpp:(.text+0x4604): first defined here
    .objs\class_attribut.o:class_attribut.cpp:(.text+0x50c8): multiple definition of `ATTRIBUT::Afficher()'
    .objs\main.o:main.cpp:(.text+0x50c8): first defined here
    .objs\class_attribut.o:class_attribut.cpp:(.text+0x5264): multiple definition of `ATTRIBUT::Afficher_Valeur(int)'
    .objs\main.o:main.cpp:(.text+0x5264): first defined here
    .objs\class_attribut.o:class_attribut.cpp:(.text+0x52a0): multiple definition of `ATTRIBUT::Get_Nom()'
    .objs\main.o:main.cpp:(.text+0x52a0): first defined here
    .objs\class_attribut.o:class_attribut.cpp:(.text+0x52c4): multiple definition of `ATTRIBUT::Get_Type()'
    .objs\main.o:main.cpp:(.text+0x52c4): first defined here
    .objs\class_attribut.o:class_attribut.cpp:(.text+0x52ea): multiple definition of `ATTRIBUT::Get_Defaut()'
    .objs\main.o:main.cpp:(.text+0x52ea): first defined here
    .objs\class_attribut.o:class_attribut.cpp:(.text+0x52f6): multiple definition of `ATTRIBUT::Get_Unique()'
    .objs\main.o:main.cpp:(.text+0x52f6): first defined here
    .objs\class_attribut.o:class_attribut.cpp:(.text+0x5302): multiple definition of `ATTRIBUT::Get_Index()'
    .objs\main.o:main.cpp:(.text+0x5302): first defined here
    .objs\class_attribut.o:class_attribut.cpp:(.text+0x530e): multiple definition of `ATTRIBUT::Get_Not_null()'
    .objs\main.o:main.cpp:(.text+0x530e): first defined here
    .objs\class_attribut.o:class_attribut.cpp:(.text+0x531a): multiple definition of `ATTRIBUT::Egal(BASE*)'
    .objs\main.o:main.cpp:(.text+0x531a): first defined here
    .objs\class_attribut.o:class_attribut.cpp:(.text+0x56fc): multiple definition of `ATTRIBUT::Different(BASE*)'
    .objs\main.o:main.cpp:(.text+0x56fc): first defined here
    .objs\class_attribut.o:class_attribut.cpp:(.text+0x5eaa): multiple definition of `ATTRIBUT::Superieur(BASE*)'
    .objs\main.o:main.cpp:(.text+0x5eaa): first defined here
    .objs\class_attribut.o:class_attribut.cpp:(.text+0x65e6): multiple definition of `ATTRIBUT::Inferieur(BASE*)'
    .objs\main.o:main.cpp:(.text+0x65e6): first defined here
    .objs\class_attribut.o:class_attribut.cpp:(.text+0x6d20): multiple definition of `ATTRIBUT::Get_Valeur(int)'
    .objs\main.o:main.cpp:(.text+0x6d20): first defined here
    .objs\class_attribut.o:class_attribut.cpp:(.text+0x6d5e): multiple definition of `ATTRIBUT::Set_Nom(std::string)'
    .objs\main.o:main.cpp:(.text+0x6d5e): first defined here
    .objs\class_attribut.o:class_attribut.cpp:(.text+0x6d78): multiple definition of `ATTRIBUT::Set_Type(std::string)'
    .objs\main.o:main.cpp:(.text+0x6d78): first defined here
    .objs\class_attribut.o:class_attribut.cpp:(.text+0x7216): multiple definition of `ATTRIBUT::Set_Defaut(BASE*)'
    .objs\main.o:main.cpp:(.text+0x7216): first defined here
    .objs\class_attribut.o:class_attribut.cpp:(.text+0x83e6): multiple definition of `ATTRIBUT::Ajout(BASE*)'
    .objs\main.o:main.cpp:(.text+0x83e6): first defined here
    .objs\class_attribut.o:class_attribut.cpp:(.text+0x8e9a): multiple definition of `ATTRIBUT::Ajout()'
    .objs\main.o:main.cpp:(.text+0x8e9a): first defined here
    .objs\class_attribut.o:class_attribut.cpp:(.text+0x98f6): multiple definition of `ATTRIBUT::Modif(int, BASE*)'
    .objs\main.o:main.cpp:(.text+0x98f6): first defined here
    .objs\class_attribut.o:class_attribut.cpp:(.text+0xa3a8): multiple definition of `ATTRIBUT::Suppr(int)'
    .objs\main.o:main.cpp:(.text+0xa3a8): first defined here
    .objs\class_attribut.o:class_attribut.cpp:(.text+0xa42a): multiple definition of `ATTRIBUT::~ATTRIBUT()'
    .objs\main.o:main.cpp:(.text+0xa42a): first defined here
    .objs\class_attribut.o:class_attribut.cpp:(.text+0xa5f4): multiple definition of `ATTRIBUT::~ATTRIBUT()'
    .objs\main.o:main.cpp:(.text+0xa5f4): first defined here
    .objs\class_attribut.o:class_attribut.cpp:(.text+0x7e38): multiple definition of `ATTRIBUT::Set_Not_null(bool)'
    .objs\main.o:main.cpp:(.text+0x7e38): first defined here
    .objs\class_attribut.o:class_attribut.cpp:(.text+0x7cc0): multiple definition of `ATTRIBUT::Set_Index(bool)'
    .objs\main.o:main.cpp:(.text+0x7cc0): first defined here
    .objs\class_attribut.o:class_attribut.cpp:(.text+0x7bd8): multiple definition of `ATTRIBUT::Set_Unique(bool)'
    .objs\main.o:main.cpp:(.text+0x7bd8): first defined here

    voila ce quil me sort

    et mon main appelle un class_database.h qui contient des element attribut

  6. #6
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Par défaut
    Il y a quoi dans ton main.cpp ?

    Je comprend pas pourquoi tu te retrouves avec un type string dans ton header. Il ne faut jamais utilisé de using namespace dans un include. Ca peut provoquer pas mal de problèmes.

    http://c.developpez.com/faq/cpp/?pag...SPACE_no_using

Discussions similaires

  1. Réponses: 8
    Dernier message: 19/09/2006, 15h42
  2. Multiple definition
    Par vdumont dans le forum C++
    Réponses: 6
    Dernier message: 11/05/2006, 19h21
  3. multiple definition of operator<<...
    Par kleenex dans le forum C++
    Réponses: 3
    Dernier message: 05/05/2006, 02h56
  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