Bonjour,
Je fais actuellement un programme en C++ objet et depuis que j'ai inclus une variable globale, j'ai des probl�mes de compilation. J'ai fait quelques recherches sur le forum mais rien n'a pu r�soudre mon probl�me. Pour r�sum� la situation, j'ai fait un petit programme (il ne sert � rien et n'est pas "propre", alors avis aux puristes) qui recr�e l'erreur :
Retour de make :
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9 g++ -c Main.cc -o Main.o -g g++ -c Data.cc -o Data.o -g g++ -c Traitement.cc -o Traitement.o -g g++ -o essai Main.o Data.o Traitement.o -g Traitement.o: dans la fonction « Traitement::affiche() »: essai_cpp/Traitement.cc:12: référence indéfinie vers « globale_data » collect2: ld returned 1 exit status make: *** [essai] Erreur 1
Voici le code :
Main.cc
Data.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 #include "Main.h" #include "globale.h" #include "Data.h" int main() { int tab[6] = {1,2,3,4,5,6}; Data *d = new Data(tab,10); Data *globale_data = d; Traitement *t = new Traitement(); t->affiche(); }
Traitement.cc
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 #ifndef DATA_H #define DATA_H class Data { private: int nb[6]; int res; public: Data(int *nb, int res); void affiche(); }; #endif
globale.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 #include "globale.h" #include "Data.h" #include "Traitement.h" Traitement::Traitement() { i = 0; } void Traitement::affiche() { globale_data->affiche(); }
Je ne comprends pas pourquoi le linker ne trouve pas la r�f�rence de la variable globale. Si quelqu'un a une id�e ...
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8 #ifndef GLOBALE_H #define GLOBALE_H #include "Data.h" extern Data *globale_data; #endif
Merci d'avance
Partager