问个模板的问题

zanglengyu 2014-11-20 03:40:19

template<typename T>
bool COMPARE(const T& t1,const T& t2);
#define LP_COMPARE (*COMPARE)


bool sortIntT1(int t1,int t2,LP_COMPARE com)
{
if ((*com)(t1,t2))
{
printf("%s\n", "sfafsfsfsfffffffa");
}
else
{
printf("%s\n", "sfafffffffa");
}
return com(t1,t2);
}


1. 以上代码我是想写一个,全局的模板函数指针类型,用来做一些操作,C++里的模板规则和函数指针的规则是不是不允许这样写?

下面这段是可以,也能理解,上面的不太理解,求大神赐教


bool intCom(int i1,int i2)
{
return i1>i2;
}

template<typename T,typename FUN>
bool sortIntT(const T& t1,const T& t2,FUN com)
{
if (com(t1,t2))
{
printf("%s\n", "sfafsfsfsfffffffa");
}
else
{
printf("%s\n", "sfafffffffa");
}
return com(t1,t2);
}

sortIntT(10,11,&intCom);

...全文
110 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
zanglengyu 2014-11-27
  • 打赏
  • 举报
回复
搞明白了,
template<typename T>
bool COMPARE(const T& t1,const T& t2);
#define  LP_COMPARE (*COMPARE)
 
 
bool sortIntT1(int  t1,int  t2,LP_COMPARE com) //这个函数实例化的时候,必须先将com这个模板实例化,否则,将无法对这个函数实例化,但是com的实例化缺依赖函数本身前两个参数,这个还是在执行阶段实例化的,两个函数的实例化出现了冲突,所以出错
{
    if ((*com)(t1,t2))
    {
        printf("%s\n", "sfafsfsfsfffffffa");
    }
    else
    {
        printf("%s\n", "sfafffffffa");
    }
    return com(t1,t2);
}
JiangWenjie2014 2014-11-20
  • 打赏
  • 举报
回复
一般模板都是怎么用,你想多了

template <class T, class Cmp>
bool Func(T const &x, T const &y, Cmp cmp)
{
    return cmp(x, y);
}

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧