首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

请帮忙指点一下,多谢啦

2012-02-19 
请帮忙指点一下,谢谢啦题目很简单是用模板函数交换两个变量的值,变量的类型是引用类型的。我照着书写了下,

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

热点排行