读书人

函数模板有关问题,帮忙看看错在了那里

发布时间: 2012-02-12 17:16:33 作者: rapoo

函数模板问题,帮忙看看错在了那里
VC6.0环境
#include <stdio.h>
#include <iostream>


template <class T>
void show(T *num,int);

int main()
{
using namespace std;
int arr[4]={1,2,3,4};
show <int> (arr,4);
return 0;
}

template <class T>
void show(T num[],int n)
{
using namespace std;
int i;
T m;
m=num[0];
for (i=1;i <n;i++)
{
if(m <num[i])
m=num[i];
}
cout < <m;
}

编译提示
error C2065: 'n ' : undeclared identifier

[解决办法]
改成这样试试看
template <class T>
void show(T* num,int n)
{
int i;
T m;
m=num[0];
for (i=1;i <n;i++)
{
if(m <num[i])
m=num[i];
}
cout < <m;
}
[解决办法]
using namespace std;
这个放到
#include <iostream> 之后就可以了
[解决办法]
我调试完了,没有问题啊,输出4
[解决办法]
我用vs2005编译没有任何问题, 大概是你vc6的bug吧,你打个vc6的最新补丁看看.
[解决办法]
把定义放在前面去。

#include <stdio.h>
#include <iostream>


template <class T>
void show(T *num,int);

template <class T>
void show(T num[],int n)
{
using namespace std;
int i;
T m;
m=num[0];
for (i=1;i <n;i++)
{
if(m <num[i])
m=num[i];
}
cout < <m;
}


int main()
{
using namespace std;
int arr[4]={1,2,3,4};
show <int> (arr,4);
return 0;
}


[解决办法]
不过的确
VC6已经属于原始社会的编译器了
对C++标准的支持严重的不够
[解决办法]
template <class T>
void show(T *num,int);


改为template <class T>
void show(T *num,int n)///////就是后面把n加上;

VC6,通过编译了。

读书人网 >C++

热点推荐