繁体   English   中英

如何创建一个静态常量成员std :: string数组?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM