如何初始化静态成员

时间:2009-09-29 14:51:06

标签: c++ static initialization

我想初始化两个静态数据成员。请参阅两个文件

// 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:错误:预期   构造函数,析构函数或类型   在'='标记之前转换   ../Logger.cpp:14:错误:预期   构造函数,析构函数或类型   '='标记之前的转换

我想在包含Logger.h的每个类中使用Logger :: write和Logger :: error。我如何初始化这两个成员?

2 个答案:

答案 0 :(得分:10)

您需要指定类型:

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

答案 1 :(得分:5)

你也可以使用这种语法,更简洁一点:

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