首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

请问一个泛型编程中求类型limits的有关问题

2012-02-29 
请教一个泛型编程中求类型limits的问题假设现在有一个模板类,接受模板参数Ttemplate typenameTclassTest

请教一个泛型编程中求类型limits的问题
假设现在有一个模板类,接受模板参数T
template <typename   T>
class   Test
{};
假设传进去的T都是C++   builtin   类型,如char,int,short,float等等,我想在类中使用T类型的最大值和最小值,请问应该怎么得到,谢谢。
我现在的写法是:
template <typename   T>
struct   limits{};

template <>
struct   limits <I8>   {
        enum   {max_val   =   I8_MAX};
        enum   {min_val   =   I8_MIN};
};

template <>
struct   limits <I16>   {
        enum   {max_val   =   I16_MAX};
        enum   {min_val   =   I16_MIN};
};

template <>
struct   limits <I32>   {
        enum   {max_val   =   I32_MAX};
        enum   {min_val   =   I32_MIN};
};

template <>
struct   limits <I64>   {
        enum   {max_val   =   I64_MAX};
        enum   {min_val   =   I64_MIN};
};

template <>
struct   limits <U8>   {
        enum   {max_val   =   U8_MAX};
        enum   {min_val   =   U8_MIN};
};

template <>
struct   limits <U16>   {
        enum   {max_val   =   U16_MAX};
        enum   {min_val   =   U16_MIN};
};

template <>
struct   limits <U32>   {
        enum   {max_val   =   U32_MAX};
        enum   {min_val   =   U32_MIN};
};

template <>
struct   limits <U64>   {
        enum   {max_val   =   U64_MAX};
        enum   {min_val   =   U64_MIN};
};

template <>
struct   limits <BOOLEAN>   {
        enum   {max_val   =   B32_MAX};
        enum   {min_val   =   B32_MIN};
};

template <>
struct   limits <F32>   {
        enum   {max_val   =   0   /*F32_MAX*/};
        enum   {min_val   =   0   /*F32_MIN*/};
};

template <>
struct   limits <F64>   {
        enum   {max_val   =   0   /*F64_MAX*/};
        enum   {min_val   =   0   /*F64_MIN*/};
};
编译期间生成,但是问题在于F32和F64两种浮点数类型的最大值和最小值不是整型,所以不能这么用,望各位不吝赐教,谢谢。

[解决办法]
是啊,所以STL的 limits才把max/min做成函数的呀。
你可以把浮点的max_val 做成函数或者static数据成员。

热点排行