在用C++编写一些代码时,我想表达一下这样的概念:对于X类型的组件,其最小值是kMinValue
,最大值是kMaxValue
。为此,我做了类似的事情:
template <typename ComponentType>
struct CompTraits
{
};
template <>
struct CompTraits<unsigned char>
{
typedef unsigned char ComponentType;
enum{
kMinValue = 0,
kMaxValue = 255
};
};
而且,我可以引用
CompTraits<unsigned char>::kMinValue
。但是,我无法理解 float 数据类型的窍门。有人可以帮忙为浮点数定义相同的东西吗?提前致谢。
最佳答案
您可以使用std::numeric_limits
而不是常量,但是如果您只需要kMinValue
和kMaxValue
-您可以使用类似这样的内容
C++ 03
template<>
struct CompTraits<float>
{
static const float kMinValue;
static const float kMaxValue;
};
const float CompTraits<float>::kMinValue = std::numeric_limits<float>::min();
const float CompTraits<float>::kMaxValue = std::numeric_limits<float>::max();
C++ 11
template<>
struct CompTraits<float>
{
static constexpr float kMinValue = std::numeric_limits<float>::min();
static constexpr float kMaxValue = std::numeric_limits<float>::max();
};
对于您的情况,您只需使用
template<>
struct CompTraits<float>
{
static const float kMinValue = 0.0f;
static const float kMaxValue = 1.0f;
};
关于c++ - 定义浮点的值(value)特征,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16083926/