我想初始化两个静态数据成员。请参阅两个文件
// 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。我如何初始化这两个成员?
答案 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);