2009-09-29 214 views
4

我想初始化兩個靜態數據成員。看到這兩個文件如何初始化靜態成員

// Logger.h 

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

//Logger.cpp 

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

在Logger.cpp兩個靜態成員的動初始化不起作用。 我得到以下編譯器(G ++)錯誤:

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

我想使用記錄儀::在每類中,我包括Logger.h寫,記錄儀::錯誤。我如何初始化這兩個成員?

回答

10

您需要指定類型:

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

yuup,我忘了。謝謝 – Maus 2009-09-29 14:55:03

5

您也可以使用這個語法,多了幾分簡潔:

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