【发布时间】:2019-10-30 17:12:44
【问题描述】:
我希望能够为类提供默认名称,以便在记录错误时始终可以使用合理的名称。我不需要(或不希望)这个名称成为类本身的一部分。这个默认名称永远不会改变,因此是const 甚至constexpr 的理想选择,但无论出于何种原因,您都不能使用constexpr QString 或constexpr std::string。
在我的cpp文件中,这样做更好吗
namespace {
const QString NAME("Some Name");
}
或
namespace {
static const QString NAME("Some Name");
}
我知道这两个版本都会导致NAME 具有内部链接,但最佳做法是什么?我看过一些关于将全局变量移动到匿名命名空间的讨论,但没有一个提到在命名空间中使用staticinside。
参考资料:
【问题讨论】:
-
“但你不能做
constexpr QString或constexpr std::string无论出于什么原因”你不能new或在编译期间执行动态内存分配。这是std::string这样的类型没有constexpr构造函数的原因之一。你可以有一个constexpr char[]的想法。