Bonjour,

Dans le cadre de mes �tudes je doit d�velopper une application "Simulateur Cardiaque" en C++ avec la biblioth�que Qt 3.3 sous Linux. Le but de l'exercice est de mettre en place une architecture MVC. Mon application fonctionnais bien, mais depuis que j'ai impl�menter une nouvelle classe (qui contient un singleton), j'ai des erreurs de compilation du type : multiple definition of . J'ai fait beaucoup de recherches sur google et apparement mon probl�me viendrais d'une d�finition d'une variable globale dans un fichier de d�claration .h.

Voila de quoi est compos�e mon projet :
battement.h/cpp --> Classe qui d�rive de QThread et qui joue un son toutes les n millisecondes (repr�sentatif des battement du coeur)
coeur.h/cpp --> Classe qui contient des m�thodes pour stresser/calmer/r�guler le coeur. Il y a un lien de type agragation entre Battement et Coeur.
controleur.ui.h --> Interface graphique Qt qui permet de d�marrer les battement de coeur, stresser, calmer, arr�ter et quitter l'application
vue.ui.h --> Interface graphique Qt qui affiche via des widget (sans blagues) les informations du coeur (pouls, etc...)
sujet.h/cpp --> La classe qui contient un singleton, mais qui contient aussi une autre classe d�rivant de QCustomEvent, et qui contient une variable constante repr�sentative du num�ro d'�venement.

C'est cette classe qui me pose probl�me. J'ai v�rifier mon code avec la correction propos�e, mais celle ci m'affiche les m�mes erreurs de compilation.

Dans un premier temps voici mon log de compilation :

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
yann@fenix:~/Developpement/CNED/Cardio4$ make
g++  -o Cardio4 .obj/main.o .obj/battement.o .obj/coeur.o .obj/sujet.o .obj/controleur.o .obj/vue.o .obj/moc_controleur.o .obj/moc_vue.o   -L/usr/share/qt3/lib -L/usr/X11R6/lib -lqt-mt -lXext -lX11 -lm -lpthread
.obj/sujet.o: In function `EvtInt::lireInt() const':
/usr/include/qt3/qglist.h:153: multiple definition of `EvtInt::lireInt() const'
.obj/main.o:/home/yann/Developpement/CNED/Cardio4/./sujet.cpp:51: first defined here
.obj/sujet.o: In function `EvtInt':
/home/yann/Developpement/CNED/Cardio4/sujet.cpp:46: multiple definition of `EvtInt::EvtInt(int, int)'
.obj/main.o:/home/yann/Developpement/CNED/Cardio4/./sujet.cpp:46: first defined here
.obj/sujet.o: In function `EvtInt':
/home/yann/Developpement/CNED/Cardio4/sujet.cpp:46: multiple definition of `EvtInt::EvtInt(int, int)'
.obj/main.o:/home/yann/Developpement/CNED/Cardio4/./sujet.cpp:46: first defined here
.obj/sujet.o: In function `Sujet::getInstance()':
/home/yann/Developpement/CNED/Cardio4/sujet.cpp:9: multiple definition of `Sujet::getInstance()'
.obj/main.o:/home/yann/Developpement/CNED/Cardio4/./sujet.cpp:9: first defined here
.obj/sujet.o:/usr/include/qt3/qglist.h:153: multiple definition of `Sujet::pSingleton'
.obj/main.o:/home/yann/Developpement/CNED/Cardio4/./sujet.cpp:51: first defined here
.obj/sujet.o: In function `Sujet::notifier(int, int)':
/home/yann/Developpement/CNED/Cardio4/sujet.cpp:26: multiple definition of `Sujet::notifier(int, int)'
.obj/main.o:/home/yann/Developpement/CNED/Cardio4/./sujet.cpp:26: first defined here
.obj/sujet.o: In function `Sujet::resilier(QObject*)':
/home/yann/Developpement/CNED/Cardio4/sujet.cpp:21: multiple definition of `Sujet::resilier(QObject*)'
.obj/main.o:/home/yann/Developpement/CNED/Cardio4/./sujet.cpp:21: first defined here
.obj/sujet.o: In function `Sujet::inscrire(QObject*)':
/home/yann/Developpement/CNED/Cardio4/sujet.cpp:16: multiple definition of `Sujet::inscrire(QObject*)'
.obj/main.o:/home/yann/Developpement/CNED/Cardio4/./sujet.cpp:16: first defined here
.obj/vue.o: In function `EvtInt::lireInt() const':
/usr/include/qt3/qglist.h:153: multiple definition of `EvtInt::lireInt() const'
.obj/main.o:/home/yann/Developpement/CNED/Cardio4/./sujet.cpp:51: first defined here
.obj/vue.o: In function `Sujet::getInstance()':
/home/yann/Developpement/CNED/Cardio4/./sujet.cpp:9: multiple definition of `Sujet::getInstance()'
.obj/main.o:/home/yann/Developpement/CNED/Cardio4/./sujet.cpp:9: first defined here
.obj/vue.o: In function `EvtInt::lireInt() const':
/usr/include/qt3/qglist.h:153: multiple definition of `Sujet::pSingleton'
.obj/main.o:/home/yann/Developpement/CNED/Cardio4/./sujet.cpp:51: first defined here
.obj/vue.o: In function `EvtInt':
/home/yann/Developpement/CNED/Cardio4/./sujet.cpp:46: multiple definition of `EvtInt::EvtInt(int, int)'
.obj/main.o:/home/yann/Developpement/CNED/Cardio4/./sujet.cpp:46: first defined here
.obj/vue.o: In function `EvtInt':
/home/yann/Developpement/CNED/Cardio4/./sujet.cpp:46: multiple definition of `EvtInt::EvtInt(int, int)'
.obj/main.o:/home/yann/Developpement/CNED/Cardio4/./sujet.cpp:46: first defined here
.obj/vue.o: In function `Sujet::notifier(int, int)':
/home/yann/Developpement/CNED/Cardio4/./sujet.cpp:26: multiple definition of `Sujet::notifier(int, int)'
.obj/main.o:/home/yann/Developpement/CNED/Cardio4/./sujet.cpp:26: first defined here
.obj/vue.o: In function `Sujet::resilier(QObject*)':
/home/yann/Developpement/CNED/Cardio4/./sujet.cpp:21: multiple definition of `Sujet::resilier(QObject*)'
.obj/main.o:/home/yann/Developpement/CNED/Cardio4/./sujet.cpp:21: first defined here
.obj/vue.o: In function `Sujet::inscrire(QObject*)':
/home/yann/Developpement/CNED/Cardio4/./sujet.cpp:16: multiple definition of `Sujet::inscrire(QObject*)'
.obj/main.o:/home/yann/Developpement/CNED/Cardio4/./sujet.cpp:16: first defined here
.obj/moc_vue.o: In function `EvtInt::lireInt() const':
/usr/include/qt3/qglist.h:153: multiple definition of `EvtInt::lireInt() const'
.obj/main.o:/home/yann/Developpement/CNED/Cardio4/./sujet.cpp:51: first defined here
.obj/moc_vue.o: In function `EvtInt':
/home/yann/Developpement/CNED/Cardio4/./sujet.cpp:46: multiple definition of `EvtInt::EvtInt(int, int)'
.obj/main.o:/home/yann/Developpement/CNED/Cardio4/./sujet.cpp:46: first defined here
.obj/moc_vue.o: In function `EvtInt':
/home/yann/Developpement/CNED/Cardio4/./sujet.cpp:46: multiple definition of `EvtInt::EvtInt(int, int)'
.obj/main.o:/home/yann/Developpement/CNED/Cardio4/./sujet.cpp:46: first defined here
.obj/moc_vue.o: In function `Sujet::getInstance()':
/home/yann/Developpement/CNED/Cardio4/./sujet.cpp:9: multiple definition of `Sujet::getInstance()'
.obj/main.o:/home/yann/Developpement/CNED/Cardio4/./sujet.cpp:9: first defined here
.obj/moc_vue.o:/usr/include/qt3/qglist.h:153: multiple definition of `Sujet::pSingleton'
.obj/main.o:/home/yann/Developpement/CNED/Cardio4/./sujet.cpp:51: first defined here
.obj/moc_vue.o: In function `Sujet::notifier(int, int)':
/home/yann/Developpement/CNED/Cardio4/./sujet.cpp:26: multiple definition of `Sujet::notifier(int, int)'
.obj/main.o:/home/yann/Developpement/CNED/Cardio4/./sujet.cpp:26: first defined here
.obj/moc_vue.o: In function `Sujet::resilier(QObject*)':
/home/yann/Developpement/CNED/Cardio4/./sujet.cpp:21: multiple definition of `Sujet::resilier(QObject*)'
.obj/main.o:/home/yann/Developpement/CNED/Cardio4/./sujet.cpp:21: first defined here
.obj/moc_vue.o: In function `Sujet::inscrire(QObject*)':
/home/yann/Developpement/CNED/Cardio4/./sujet.cpp:16: multiple definition of `Sujet::inscrire(QObject*)'
.obj/main.o:/home/yann/Developpement/CNED/Cardio4/./sujet.cpp:16: first defined here
collect2: ld a retourné 1 code d'état d'exécution
make: *** [Cardio4] Erreur 1
Et voici maintenant mon fichier sujet.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
// Classe Sujet 
 
#ifndef SUJET_H 
#define SUJET_H 
 
#include <list> 
#include <qobject.h> 
#include <qevent.h>  
 
// Numero evenement 
const int EVTPERIODE = 1052;
 
class Sujet 
{ 
private: 
    static Sujet *pSingleton; 
    std::list<QObject*> maListe; 
    std::list<QObject*>::iterator monIterateur; 
 
public: 
    static Sujet *getInstance(); 
    void inscrire(QObject*); 
    void resilier(QObject*); 
    void notifier(int, int); 
}; 
 
 
 
// Classe d'événement personnalisée dérivant de QCustomEvent 
// Doc : http://qt.developpez.com/doc/3.3/qcustomevent/ 
class EvtInt : public QCustomEvent 
{ 
private: 
    int entier; 
 
public: 
    EvtInt(int, int); 
    int lireInt() const; 
}; 
 
#endif // SUJET_H
Je ne sais plus quoi faire, et j'esp�re que vous pourrez m'aider � trouver une solution � mon probl�me. Si vous voulez que je poste d'autres parties du code n'h�sitez pas.

En vous remerciant d'avance.