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;
}
用上模版函数之后为什么出现错误了呢 展开
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;
}
用上模版函数之后为什么出现错误了呢 展开
3个回答
展开全部
#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测试的。
展开全部
#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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
简单说吧,T swap(T &p1,T &p2)表示返回值类型为T,而你在下面的函数体中没有return ...;所以肯定不行啊。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询