Bonjour,
Je suis actuellement en train de faire une classe "Logger".
J'ai donc fait un singleton pouvant g�rer un tableau d'instance de cette classe.
A c�t� j'ai quelques param�tres qui doivent rester fixe, pour ceci j'utilise des tableau constants.
Mais je suis confront� � un petit probl�me :
Or ce que je ne m'explique pas c'est que pour la variable chemin, il n'a aucune difficult� pour trouver sa r�f�rence :/media/Acer/Users/Neckara/Desktop/Donnees/Projet/Console/Console/logger.cpp:88: undefined reference to `LD::LOGGER_PARAM::taille_buffer'
Param.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 #ifndef PARAM_H #define PARAM_H namespace LD { //[...] /** @brief Options relative au fichier de log */ namespace LOGGER_PARAM { /** @brief nomination des différents fichiers de logs. MAX est le nombre de fichiers de logs connus. Il doit toujours être placé à la fin */ typedef enum{DEFAULT, MAX}IdLog; } } #endif // PARAM_HLa ligne incrimin�e :
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 //param.cpp #include "Param.h" namespace LD { //.... /** @brief Options relative au fichier de log */ namespace LOGGER_PARAM { /** @brief donne les chemins où écrire les différents fichiers de logs */ const char * chemin[MAX] = {"erreur.log"}; /** @brief donne les tailles des buffers pour les différents fichiers de logs */ const int taille_buffer[MAX] = {500}; } }
Si je met ceci :
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2 instance[id] = new Logger(LOGGER_PARAM::chemin[id], LOGGER_PARAM::taille_buffer[id]); //par contre aucun problème avec chemin
Tout fonctionne correctement...
Code : S�lectionner tout - Visualiser dans une fen�tre � part instance[id] = new Logger(LOGGER_PARAM::chemin[id], 50/* LOGGER_PARAM::taille_buffer[id] */);
Plus haut dans le m�me fichier on trouve :
Le tout �tant dans le namespace LD bien s�r.
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5 namespace LOGGER_PARAM { extern const char * chemin[MAX]; extern const int taille_buffer[MAX]; }
Auriez-vous une id�e ?
Merci d'avance,
Neckara
EDIT : j'avais oublier de mettre un const :
Et l� il ne trouve plus du tout chemin.const char * const chemin[MAX];
J'ai donc essay� d'enlever le const pour taille_buffer et tout d'un coup il arrive � le trouver...
Donc pourquoi est-ce que de mettre ou de ne pas mettre une variable en constante fait qu'il ne la trouve plus lors de l'�dition de lien?
Je pr�cise que j'ai bien r�percut� chaque modifications sur la d�claration de la variable en extern et sur la "vrai" d�claration de la variable.
Partager