[英]How to create a static constant member std::string array?
我不敢相信听起来如此简单的事情可能很难做到。
class OutputHandler {
private:
static std::string const errorPrefixes[] = {"INFO", "WARNING", "ERROR", "CRASH"};
};
如何正确执行此操作? 从各种文档中,我了解到,无论它们是常量,都无法初始化静态成员对象。
在类之外编写初始化以及定义:
class OutputHandler
{
private:
static std::string const errorPrefixes[];
};
std::string const OutputHandler::errorPrefixes[] = {"INFO", "WARNING", "ERROR", "CRASH"};
(该定义当然要遵循一个定义规则,并且只能出现在一个转换单元中,例如OutputHandler.cpp
。)
您必须在源文件中初始化static
成员,以满足one-definition-rule的要求 :
// in .h
class OutputHandler {
private:
static std::string const errorPrefixes[]; // declaration
};
// in .cpp
// definition
std::string const OutputHandler::errorPrefixes[] = {"INFO", "WARNING", "ERROR", "CRASH"};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.