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 :
/media/Acer/Users/Neckara/Desktop/Donnees/Projet/Console/Console/logger.cpp:88: undefined reference to `LD::LOGGER_PARAM::taille_buffer'
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 :

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_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
//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};
    }
}
La ligne incrimin�e :
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
Si je met ceci :
Code : S�lectionner tout - Visualiser dans une fen�tre � part
instance[id] = new Logger(LOGGER_PARAM::chemin[id], 50/* LOGGER_PARAM::taille_buffer[id] */);
Tout fonctionne correctement...

Plus haut dans le m�me fichier on trouve :
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];
    }
Le tout �tant dans le namespace LD bien s�r.

Auriez-vous une id�e ?

Merci d'avance,
Neckara

EDIT : j'avais oublier de mettre un const :
const char * const chemin[MAX];
Et l� il ne trouve plus du tout chemin.
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.