【发布时间】:2016-01-15 14:07:21
【问题描述】:
如何定义可以在我的程序中安全使用的静态 const std::string 类变量?
第一种方法 - 失败 static initialization order fiasco:
文件:Consts.h
namespace constants {
struct Consts {
static const std::string kVar = "123";
}
}
第二种方法-导致将kVar复制到我们包含此标头的每个翻译单元中,这会导致违反一个定义规则的原则,并可能导致双重释放或释放后使用错误-如果此定义为,则这是未定义的行为包含在多个 cpp 文件中(我想要这样做,因为我想要全局共享 std::string const)。
文件:Consts.h
namespace constants {
const std::string kVar = "123";
}
有没有更好的方法(除了使用宏 - 这也是全局如此丑陋的解决方案)以安全的方式定义这样的 var?这种构造的最佳实践是什么?
【问题讨论】: