C++模板函数使用模板函数作为参数时候发生C2896错误

代码如下:template<classparameter>parameterpro1(parameterpara){return++para;}template<clas... 代码如下:
template<class parameter>
parameter pro1(parameter para)
{
return ++para;
}

template <class process,class parameter>
void pro2(process pro1,parameter para)
{
cout<<pro1(para);
}

void main()
{
int a=3;
pro2(pro1,a);
}
此时会发生C2896错误,但若改成这样就没错
int pro1(int para)
{
return ++para;
}
template <class process,class parameter>
void pro2(process pro1,parameter para)
{
cout<<pro1(para);
}

void main()
{
int a=3;
pro2(pro1,a);
}
但是这样pro1就不能当模板使用,效果大减,我用的是VS2005,请问怎么解决
展开
 我来答
skufly
2009-08-13 · TA获得超过168个赞
知道答主
回答量:47
采纳率:0%
帮助的人:64.5万
展开全部
呃,很简单啊,因为你没有实例化模板

pro2(pro1,a);
改成
pro2(pro1<int>,a);
就可以了。

还有,参数名字最好改个名字,这样比较直观
而且类型不定,用typename会比较好吧:
template <typename process, typename parameter>
void pro2(process tPro1, parameter para)
{
cout<<tPro1(para);
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式