我正在寻找使用 C++03 标准的解决方案(我被限制使用该版本的标准已有好几年了)。也欢迎 C++11 的解决方案,但不会被“接受”作为这个问题的答案。
什么是一种简单、简洁的方法,我可以将一组相关的常量浮点值表示为单个类型(类似于枚举)以确保类型安全而不会产生大量开销,并且仍然允许我直接将值作为浮点数进行操作?
最终结果是我希望能够执行以下操作:
enum FloatingPointEnum
{
VALUE1 = 0.1234f,
...
VALUEN = 0.6789f
};
float SomeFunction(FloatingPointEnum value)
{
float new_value;
/* perform some operation using "value" to calculate "new_value" */
new_value = static_cast<float>(value); // <- a simplistic example
return new_value;
}
虽然我可以想到几种解决方案,但它们都不像我想要的那样干净/简单/直截了当,而且我认为有人必须已经有了一个优雅的解决方案来解决这个问题(但我似乎无法在搜索中找到一个)。
编辑:
我希望使用未直接指定为枚举类型中的值的值对 SomeFunction 的以下调用无法编译:
float nonEnumeratedValue = 5.0f
SomeFunction(nonEnumeratedValue);