variable globale et fichiers séparés
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 :D ) qui recrée l'erreur :
Retour de make :
Code:
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:
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:
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:
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:
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