2009-09-29 148 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);