如何初始化静态成员 [英] How to initialize a static member
问题描述
我要初始化两个静态数据成员。查看这两个文件
I want to initialize two static data members. See the two files
// 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 ++)错误:
The initilization of the two static members in Logger.cpp doesn't work. I get the following compiler (g++) error:
g ++ -O0 -g3 -Wall -c
- fmessage-length = 0 -MMD -MP -MFLogger.d-MTLogger.d-oLogger.o../Logger.cpp../Logger.cpp:13:error:expected
构造函数,析构函数或类型
转换'='token
../Logger.cpp:14:error:expected
构造函数,析构函数或类型
转换前'='token
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 :: write和Logger :: error, 。H。
I want to use Logger::write and Logger::error in each class in which I include Logger.h. How do I have to initialize these two members?
推荐答案
您需要指定类型:
LoggerConcrete Logger::error = LoggerConcrete(LOG_DEBUG);
LoggerConcrete Logger::write = LoggerConcrete(LOG_DEBUG);
这篇关于如何初始化静态成员的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!