如何初始化静态成员
问题描述:
我想初始化两个静态数据成员。看到这两个文件如何初始化静态成员
// 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写,记录仪::错误。我如何初始化这两个成员?
答
您需要指定类型:
LoggerConcrete Logger::error = LoggerConcrete(LOG_DEBUG);
LoggerConcrete Logger::write = LoggerConcrete(LOG_DEBUG);
答
您也可以使用这个语法,多了几分简洁:
LoggerConcrete Logger::error(LOG_DEBUG);
LoggerConcrete Logger::write(LOG_DEBUG);
yuup,我忘了。谢谢 – Maus 2009-09-29 14:55:03