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

模板中使用函数类是否有些不一样的地方?解决方法

2012-02-16 
模板中使用函数类是否有些不一样的地方?templatetypenameelemType,typenameCompless elemTypeclassLe

模板中使用函数类是否有些不一样的地方?
template   <typename   elemType,   typename   Comp   =   less <elemType>   >  
class   LessThanPred   {  
public:  
      LessThanPred(   const   elemType   &val   )   :   _val(   val   ){}  
      bool   operator()(   const   elemType   &val   )   const  
                                    {   return   Comp(   val,   _val   );   }  

      void   val(   const   elemType   &newval   )   {   _val   =   newval;   }  
      elemType   val()   const   {   return   _val;   }  
private:  
      elemType   _val;  
};  


比如这个类的定义里,  
return   Comp(val   ,   _val);
Comp是一个函数类模板,这里原本是想调用Comp里对()的重载
这必须通过对象来调用,显然这里没有对象
如果把Comp(val,   _val)理解成调用constructor建立无名对象,那constructor没有返回值,这里却要求返回bool型。
这到底该怎么理解呢?

[解决办法]
是的,恭喜楼主读书很认真,分析了书上的一个错误。虽然手里没有英文版,不知道是不是只中文版的印刷错误。
应该是return Comp()(val, _val);
另外,essential c++ 是个速读型普及读物,不适合做入门书籍,建议换书《C++ Primer》

热点排行