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
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();
 
 
}
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
 
#ifndef DATA_H
#define DATA_H
 
class Data
{
    private:
    int nb[6];
    int res;
 
    public:
    Data(int *nb, int res);
 
    void affiche();
};
#endif
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
 
#include "globale.h"
#include "Data.h"
#include "Traitement.h"
 
Traitement::Traitement()
{
    i = 0;
}
 
void Traitement::affiche()
{
    globale_data->affiche();
}
globale.h
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
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 ...

Merci d'avance