如何初始化静态成员

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 的类中使用 Logger::write 和 Logger::error。我该如何初始化这两个成员?
2个回答

10

你需要指定类型:

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

5
您也可以使用这种更简洁的语法:
LoggerConcrete Logger::error(LOG_DEBUG);
LoggerConcrete Logger::write(LOG_DEBUG);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接