写得用于比较的函数对象模板
2012-08-17 13:39
316 查看
#include "bdc_share_ptr.hpp"
template <typename IDTYPE, typename ITEMTYPE, typename GETIDFUN>
class ItemCompareById
{
typedef boost::shared_ptr<ITEMTYPE> p_ITEMTYPE_T;
public:
explicit ItemCompareById(IDTYPE id, GETIDFUN dun);
ItemCompareById(const ItemCompareById &compare);
bool operator()(p_ITEMTYPE_T &p_obj) ;
bool operator()(ITEMTYPE *p_obj) ;
bool operator()(ITEMTYPE &p_obj) ;
private:
ItemCompareById &operator = (const ItemCompareById &compare);
IDTYPE id_;
GETIDFUN fun_;
};
template <typename IDTYPE, typename ITEMTYPE, typename GETIDFUN>
ItemCompareById<IDTYPE, ITEMTYPE, GETIDFUN>::ItemCompareById(IDTYPE id, GETIDFUN fun)
: id_(id), fun_(fun)
{
}
template<typename IDTYPE, typename ITEMTYPE, typename GETIDFUN>
ItemCompareById<IDTYPE, ITEMTYPE, GETIDFUN>::ItemCompareById(const ItemCompareById &compare)
: id_(compare.id_), fun_(compare.fun_)
{
}
template <typename IDTYPE, typename ITEMTYPE, typename GETIDFUN>
bool ItemCompareById<IDTYPE, ITEMTYPE, GETIDFUN>::operator()(ITEMTYPE &obj)
{
return (obj.*fun_)() == id_;
}
template <typename IDTYPE, typename ITEMTYPE, typename GETIDFUN>
bool ItemCompareById<IDTYPE, ITEMTYPE, GETIDFUN>::operator()(p_ITEMTYPE_T &p_obj)
{
return (p_obj != 0) && ((p_obj.get()->*fun_)() == id_);
}
template <typename IDTYPE, typename ITEMTYPE, typename GETIDFUN>
bool ItemCompareById<IDTYPE, ITEMTYPE, GETIDFUN>::operator()(ITEMTYPE *p_obj)
{
return (p_obj != 0) && ((p_obj->*fun_)() == id_);
}
template <typename IDTYPE, typename ITEMTYPE, typename GETIDFUN>
class ItemCompareById
{
typedef boost::shared_ptr<ITEMTYPE> p_ITEMTYPE_T;
public:
explicit ItemCompareById(IDTYPE id, GETIDFUN dun);
ItemCompareById(const ItemCompareById &compare);
bool operator()(p_ITEMTYPE_T &p_obj) ;
bool operator()(ITEMTYPE *p_obj) ;
bool operator()(ITEMTYPE &p_obj) ;
private:
ItemCompareById &operator = (const ItemCompareById &compare);
IDTYPE id_;
GETIDFUN fun_;
};
template <typename IDTYPE, typename ITEMTYPE, typename GETIDFUN>
ItemCompareById<IDTYPE, ITEMTYPE, GETIDFUN>::ItemCompareById(IDTYPE id, GETIDFUN fun)
: id_(id), fun_(fun)
{
}
template<typename IDTYPE, typename ITEMTYPE, typename GETIDFUN>
ItemCompareById<IDTYPE, ITEMTYPE, GETIDFUN>::ItemCompareById(const ItemCompareById &compare)
: id_(compare.id_), fun_(compare.fun_)
{
}
template <typename IDTYPE, typename ITEMTYPE, typename GETIDFUN>
bool ItemCompareById<IDTYPE, ITEMTYPE, GETIDFUN>::operator()(ITEMTYPE &obj)
{
return (obj.*fun_)() == id_;
}
template <typename IDTYPE, typename ITEMTYPE, typename GETIDFUN>
bool ItemCompareById<IDTYPE, ITEMTYPE, GETIDFUN>::operator()(p_ITEMTYPE_T &p_obj)
{
return (p_obj != 0) && ((p_obj.get()->*fun_)() == id_);
}
template <typename IDTYPE, typename ITEMTYPE, typename GETIDFUN>
bool ItemCompareById<IDTYPE, ITEMTYPE, GETIDFUN>::operator()(ITEMTYPE *p_obj)
{
return (p_obj != 0) && ((p_obj->*fun_)() == id_);
}
相关文章推荐
- 【python学习笔记】python中的模块,类,函数,对象,实例(与JAVA的比较)
- 【1141】面向对象程序设计上机练习二(函数模板)
- $.parseJSON() 函数用于将符合标准格式的的JSON字符串转为与之对应的JavaScript对象。
- js valueOf()函数用于返回指定对象的原始值
- 面向对象程序设计上机练习二(函数模板)
- 面向对象程序设计上机练习二(函数模板)
- 关联容器存放的是指针时,自定义比较函数模板
- 8.9 编写函数打开文件用于输入,将文件内容读入 string 类型的 vector 容器,每一行存储为该容器对象 的一个元素。8.10 重写上面的程序,把文件中的每个单词存储为 容器的一个元素
- Focal Loss 函数用于密集对象检测
- 面向对象程序设计上机练习二(函数模板)
- 面向对象程序设计上机练习二(函数模板)
- sdut 面向对象程序设计上机练习二(函数模板)
- 面向对象程序设计上机练习二(函数模板)(C++函数模板)
- 面向对象程序设计上机练习二(函数模板)
- C++中 函数,函数模板,函数对象,函数对象模板 与 回调机制 不得不说的事
- C++ 面向对象程序设计上机练习二(函数模板)
- 函数指针和函数对象的比较
- 面向对象程序设计上机练习二(函数模板)
- 函数对象用于标准库
- jQuery.isEmptyObject()函数用于判断指定参数是否是一个空对象。