【发布时间】:2019-12-02 10:41:26
【问题描述】:
在 C++ 中,为了拥有更整洁的代码,我想在我的头文件中将一组值声明为常量,例如:
constexpr float SIZE_SMALL = 1.5f;
constexpr float SIZE_MEDIUM = 2.5f;
constexpr std::string COLOR_RED = "RED";
constexpr std::string MATERIAL_SILK = "SILK";
...etc
但这变得太长且笨拙。此外,一些常量可以组合在一起,因为它们描述了同一属性的不同值,例如SIZE_SMALL 和 SIZE_MEDIUM。
在我的头文件中写这个最好的方法是什么?我考虑了结构,例如
struct SIZE
{
float SMALL;
float MEDIUM;
}
但是我必须在我的 .cpp 中声明和定义一个变量,这有点超出了所有这一切的目的。
【问题讨论】:
-
您能解释一下“但这太长而且太笨拙了”吗?我不一定会明白为什么。我会按语义对这些常量进行分组,最终将它们放入嵌套命名空间
namespace size { constexpr float small = 1.5f; }。 -
static constexpr成员变量呢? -
@YSC,我在同一个命名空间中有大约 50 多个这样的常量
-
好吧,你知道命名空间是免费的。
-
哦,你的意思是命名空间中的命名空间?听起来不错
标签: c++ header refactoring constants compile-time-constant