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

有关模板的特化解决方法

2012-03-05 
有关模板的特化刚接触STL中文版,对特化这个概念不清楚,大家可否解释下比如说:template classT,classIt i

有关模板的特化
刚接触STL中文版,对特化这个概念不清楚,大家可否解释下
比如说:
template <class   T,class   It> inline
T   sun_all(It   first,It   last)
{
                          T   sum;
                          for(sum=0;first!=last;++first)
                          sum+=*first;
                          return   (sum);
                          }
将此模板特化为指针或float型,随便一个就可以谢谢!^_^
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
在网上查了些资料:
//   general   version
template <class   T>
class   Compare
{
public:
        static   bool   IsEqual(const   T&   lh,   const   T&   rh)
        {
                return   lh   ==   rh;
        }
};
这是一个用于比较的模板类,里面可以有多种用于比较的函数,   以IsEqual为例。
 
一、特化为绝对类型
也就是说直接为某个特定类型做特化,这是我们最常见的一种特化方式,   如特化为float,   double等

//   specialize   for   float
template <>
class   Compare <float>                       //这个地方可否解释一下
{
public:
        static   bool   IsEqual(const   float&   lh,   const   float&   rh)
        {
                return   abs(lh   -   rh)   <   10e-3;
        }
};
上面代码在vc,dev上也不能通过



[解决办法]
1
[解决办法]
template <>
class Compare <float>
[解决办法]
vc可以用阿,至少2003开始就支持的很好了,

记得偏特化放cpp里,否则ms compiler可能会出现引用问题

intel的compiler放哪里都没有问题

热点排行