关于C++模板函数的一点疑问
写了个程序,代码如下,#include<iostream>usingnamespacestd;intmain(void){template<typenameT>Tadd(...
写了个程序,代码如下,
#include<iostream>
using namespace std;
int main(void)
{
template<typename T>T add(T a,T b);
cout<<"int_add(30,20)="<<add(30,20)<<endl;
return 0;
}
template<typename T>T add(T a,T b)
{
return a+b;
}
编译时提示出错.后来我将语句template<typename T>T add(T a,T b);放在main主函数之前声明,这时编译器能够正常编译执行.这是怎么回事?莫非模板函数只能在函数体外声明吗?不太明白,求真相.谢谢! 展开
#include<iostream>
using namespace std;
int main(void)
{
template<typename T>T add(T a,T b);
cout<<"int_add(30,20)="<<add(30,20)<<endl;
return 0;
}
template<typename T>T add(T a,T b)
{
return a+b;
}
编译时提示出错.后来我将语句template<typename T>T add(T a,T b);放在main主函数之前声明,这时编译器能够正常编译执行.这是怎么回事?莫非模板函数只能在函数体外声明吗?不太明白,求真相.谢谢! 展开
3个回答
展开全部
template<typename T>T add(T a,T b); 这句话就是函数声明,函数声明当然要放在函数外面。
你也可以把模板函数定义在main函数的前面,这样就不需要函数声明了。
#include<iostream>
using namespace std;
int template<typename T>T add(T a,T b)
{
return a+b;
}
main(void)
{
cout<<"int_add(30,20)="<<add(30,20)<<endl;
return 0;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询