读书人

请帮忙指点一下多谢啦

发布时间: 2012-02-19 19:43:37 作者: rapoo

请帮忙指点一下,谢谢啦
题目很简单是用模板函数交换两个变量的值,变量的类型是引用类型的。
我照着书写了下,但是报错。我觉得在主函数里已经声明是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
[解决办法]

C/C++ code
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; } 

读书人网 >C++

热点推荐