c++模板函数调用 10
template<typenamey>yin_put(){ya;cout<<"pleaseenter:";cin>>a;returna;}我要用函数模板把任意类型的数据赋...
template<typename y>
y in_put(){
y a;
cout<<"please enter : ";
cin>>a;
return a;
}
我要用函数模板把任意类型的数据赋值给变量,但是上述的只能用于int型:in_put<typenname>();
要怎么改? 展开
y in_put(){
y a;
cout<<"please enter : ";
cin>>a;
return a;
}
我要用函数模板把任意类型的数据赋值给变量,但是上述的只能用于int型:in_put<typenname>();
要怎么改? 展开
2个回答
展开全部
#include <iostream>
#include <string>
using namespace std;
template<typename y>
y in_put(){
y a;
cout<<"please enter : ";
cin>>a;
return a;
}
int main(void){
// 调用形式有两种:
第1种形式:当函数里没有采用0个参数列表时
调用形式: 函数名<基础类型名>(); // 必须显式给出数据类型,否则编译系统无法推断虚拟类型的具体类型是什么。
第2种形式:当函数里采用了1+个参数列表时
调用形式: 函数名(参数列表); // 即不需要显式给出具体的数据类型
int i=in_put<int>(); // y被int替代
string s=in_put<string>(); // y被string替代
cout<<"s="<<s<<endl<<"i="<<i<<endl;
}
追问
我是想直接用 in_put作为函数的参数使用,比如
template
y add(int a,int b)
{
return a+b;
}
然后在主函数
add(in_put,in_put);//但是只能用于int型的数据
这样怎么弄?
追答
#include <iostream>
#include <string>
using namespace std;
template<typename y>
y in_put(){
y a;
cout<<"please enter : ";
cin>>a;
return a;
}
template<typename y>
y add(y p1,y p2){
return p1+p2;
}
int main(void){
cout<<add(in_put<int>(),in_put<int>())<<endl;
cout<<add(in_put<string>(),in_put<string>())<<endl;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询