函数模板问题,帮忙看看错在了那里
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,通过编译了。