请帮忙指点一下,谢谢啦
题目很简单是用模板函数交换两个变量的值,变量的类型是引用类型的。
我照着书写了下,但是报错。我觉得在主函数里已经声明是int型了,为什么不行的呢?请多指教,谢谢啦!
#include "stdafx.h"
#include "iostream"
using namespace std;
template <class T1>
T1 swap(T1 &a, T1 &b )
{
T1 tmp=a;
a=b;
b=tmp;
}
int main()
{
int A=9;
int B=7;
cout << "Before swap():\ti: "<< A << "\tj: "<<B<< endl;
swap(A, B);
cout << "After swap():\ti: "<< A << "\tj: "<< B<< endl;
return 0;
}
[解决办法]
T1 swap(T1 &a, T1 &b )
{
T1 tmp=a;
a=b;
b=tmp;
}
你这样的话是要返回一个T1类型的值
改成
void swap(T1 &a, T1 &b )
{
T1 tmp=a;
a=b;
b=tmp;
}
就可以了啊
[解决办法]
现在是int,才可以return 0;
lz换成int*试试
而且这里没必要返回T1类型的值
只要有template <class T1> 这句就是模板
哪怕函数里没用到T1
[解决办法]
template <class T, int size> T nummax(T (&r_arr)[size]) { T max_val = r_arr[0]; for ( int i = 1; i < size; ++i ) if ( r_arr[i] > max_val ) max_val = r_arr[i]; return max_val; }template <class T1> void numswap(T1 &a, T1 &b ) { T1 tmp=a; a=b; b=tmp; } int main() { int i; int Arr[10]; for (i = 0; i < 10; ++i) { cout <<"Input number:" <<endl; cin>>Arr[i]; } int Value=nummax(Arr); cout <<"Max number is:" <<Value <<endl; double DoubleArr[10]; for (i = 0; i < 10; ++i) { cout <<"Input double number:" <<endl; cin>>DoubleArr[i]; } double bValue=nummax(DoubleArr); cout <<"Max number is:" <<bValue <<endl; int A=9; int B=7; cout << "Before numswap():\ti: " << A << "\tj: " <<B << endl; numswap( A, B); cout << "After numswap():\ti: " << A << "\tj: " << B << endl; return 0; }