c++程序 模版函数 引用

#include<iostream>usingnamespacestd;template<typenameT>Tswap(T&p1,T&p2){Ttemp;temp=p1... #include <iostream>
using namespace std;
template<typename T>
T swap(T &p1,T &p2)
{
T temp;
temp=p1;
p1=p2;
p2=temp;
}
template<typename T>
int main()
{
char ch1='a',ch2='b';
double c=3.5,d=9.9;
swap(ch1,ch2);
cout<<ch1<<endl<<ch2<<endl;
swap(c,d);
cout<<c<<endl<<d<<endl;
return 0;
}
用上模版函数之后为什么出现错误了呢
展开
 我来答
ljt20061908
2013-11-07 · TA获得超过1033个赞
知道小有建树答主
回答量:527
采纳率:87%
帮助的人:201万
展开全部
#include <iostream>
//using namespace std;1.此句会产生名字空间有冲突,也就是swap在std空间已经有了
template<typename T>
void swap(T &p1,T &p2)//2.如果不是void,你得明确有return的值

 T temp;
 temp=p1; 
 p1=p2; 
 p2=temp;
}
int _tmain(int argc, _TCHAR* argv[])
{
 char ch1='a',ch2='b';
 double c=3.5,d=9.9;
 swap(ch1,ch2);
 std::cout<<ch1<<std::endl<<ch2<<std::endl;//3.现在得这样写
 swap(c,d);
 std::cout<<c<<std::endl<<d<<std::endl;
 return 0;
}

我是在vs2012测试的。

军天下wolfer
2013-11-07 · TA获得超过2081个赞
知道小有建树答主
回答量:734
采纳率:100%
帮助的人:940万
展开全部
#include <iostream>
using namespace std;
template<typename T> 
void myswap(T &p1,T &p2)// 1.、函数无返回值  2、重命名函数swap,因为系统中有这个函数
{
T temp;
temp=p1;
p1=p2;
p2=temp;
}
//template<typename T>去掉这一句
int main()
{
char ch1='a',ch2='b';
double c=3.5,d=9.9;
myswap(ch1,ch2);
cout<<ch1<<endl<<ch2<<endl;
myswap(c,d);
cout<<c<<endl<<d<<endl;
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
bd804099068
2013-11-07 · 超过35用户采纳过TA的回答
知道答主
回答量:109
采纳率:0%
帮助的人:95.3万
展开全部
简单说吧,T swap(T &p1,T &p2)表示返回值类型为T,而你在下面的函数体中没有return ...;所以肯定不行啊。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式