vouzico Bro Naoned e Breizh | Voilà je suis sous Visual C++ et j'ai un problème de compilation : au linkage j'ai droit à ce beau message d'erreur :
main.obj : error LNK2005: "private: static int Analyse::size_tab" (?size_tab@Analyse@@0HA) already defined in analyse.obj
main.obj : error LNK2005: "private: static char (* Analyse::tab_analyse)[30]" (?tab_analyse@Analyse@@0PAY0BO@DA) already defined in analyse.obj
J'ai cru comprendre que cette erreur est dûe à l'inclusion 2 fois du analyse.h mais je vois pas trop comment résoudre le problème.
analyse.h :
Code :
- #ifndef __ANALYSE__
- #define __ANALYSE__
- #include <iostream>
- #include "correction.h"
- #define TAILLEMOT 30
- class Analyse : public Correction
- {
- private :
- static char tab_analyse [][TAILLEMOT];
- static int size_tab;
- public :
- Analyse (char *);
- ~Analyse();
- };
- char Analyse::tab_analyse [][TAILLEMOT] = {"create", "displayall", "move", "put"};
- int Analyse::size_tab = 4;
- #endif
|
correction.h :
Code :
- #ifndef __CORRECTION__
- #define __CORRECTION__
- #include <iostream>
- #define TAILLEMOT 30
- class Correction
- {
- private :
- char (*modele) [TAILLEMOT];
- char *acomparer;
- int tabsize;
- public :
- inline int size (const char *) const;
- inline bool identique (const char *,const char *) const;
- inline int comparaison (const char *,const char *) const;
- inline bool compareEqualSize (const char *, const char *) const;
- inline bool compareMinusSize (const char *,const char *) const;
- inline bool comparePlusSize (const char *, const char *) const;
- char* getModifiedString () const;
- Correction (char *param, char tabparam [][TAILLEMOT], const int size);
- Correction();
- ~Correction ();
- };
- #include "fonctions.inl"
- #endif
|
main.cpp :
Code :
- #include <iostream.h>
- #include "analyse.h"
- #include "create.h"
- void main ()
- {
- char param[16];
- char nomforme [16];
- char libelle[16];
- char couleur[16];
- char coordonnes [16];
- cout << "Veuillez entrer le nom de votre forme, le libelle de votre forme, sa couleur,";
- cout << " et ses coordonnees entre parentheses et separees d'une virgule\n";
- cin >> param >> nomforme >> libelle >> couleur >> coordonnes;
- Analyse analyse (param);
- if (analyse.getModifiedString()==NULL)
- cout << "Le premier mot que vous avez entre n'appartient pas au vocabulaire";
- cout << "de ce programme, veuillez modifier votre premier mot";
- else
- cout << "\n" << analyse.getModifiedString();
- if (analyse.identique(analyse.getModifiedString(), "displayall" ))
- {
- cout << "\nAFFICHER TOUT";
- }
- }
|
Message édité par vouzico le 27-02-2006 à 15:54:21
|