2009-09-29 4 views
4

Je souhaite initialiser deux membres de données statiques. Voir les deux fichiersComment initialiser un membre statique

// Logger.h 

class Logger 
{ 
    public: 
     static LoggerConcrete error; 
     static LoggerConcrete write; 
}; 

et

//Logger.cpp 

Logger::error = LoggerConcrete(LOG_DEBUG); 
Logger::write = LoggerConcrete(LOG_DEBUG); 

Le initilization des deux membres statiques dans Logger.cpp ne fonctionne pas. je reçois le compilateur suivant (g ++) Erreur:

g++ -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"Logger.d" -MT"Logger.d" -o"Logger.o" "../Logger.cpp" ../Logger.cpp:13: error: expected constructor, destructor, or type conversion before '=' token ../Logger.cpp:14: error: expected constructor, destructor, or type conversion before '=' token

Je veux utiliser Logger :: écrire et Logger :: erreur dans chaque classe où j'inclus Logger.h. Comment dois-je initialiser ces deux membres?

Répondre

10

Vous devez spécifier le type:

LoggerConcrete Logger::error = LoggerConcrete(LOG_DEBUG); 
LoggerConcrete Logger::write = LoggerConcrete(LOG_DEBUG); 
+0

yuup, j'ai oublié. Merci – Maus

5

Vous pouvez également utiliser cette syntaxe, un peu plus concise:

LoggerConcrete Logger::error(LOG_DEBUG); 
LoggerConcrete Logger::write(LOG_DEBUG); 
Questions connexes