无法解析外部符号
#include "stdafx.h"#include<iostream>
using namespace std;
template <typename t,typename t1>
void hs(t a[],t1 b);
template <>void hs(char a[],int b);
int main()
{
char *ip[]={"sadfsdssdf","xcvsa","sdsd","zcxsd","wed"};
hs(ip,5); // 就是这里的问题,不知道错在哪~~~~~.求解释啊
cin.get();
return 0;
}
template<>void hs(char a[],int b)
{
for(int l=0;l<5;l++)
{
cout<<(strlen(a))<<endl;
}
}
template <typename t,typename t1>
void hs(t a[],t1 b);
并没有给出一般性的函数末班定义,仅仅给出了
template <>void hs(char a[],int b); 特化的函数定义
然而调用的时候
hs(ip,5);这里ip类型并不是char[],而是char*[],这两种类型不能隐式转换,所以必须使用该函数模板的一般性定义,但你没给。。。所以报错。 #include "stdafx.h"
#include<iostream>
using namespace std;
template <typename t,typename t1>
void hs(t a[],t1 b)
{
for(int l=0;l<5;l++, a++) // 这里还要让指针向前移动, 才能直到下一个字符串的首地址
cout<<(strlen(*a))<<endl;
}
int main()
{
char* ip[]={"sadfsdssdf","xcvsa","sdsd","zcxsd","wed"};
hs(ip,5);
cin.get();
return 0;
}
代码编译通过 混鱼币
混鱼币
看看 !!! hs(&ip,5); 混!!!! 楼主都这么多天了也不知道设置成已解决 ?? 你的实参是指针,形参是不能声明为数组模式的
页:
[1]