类型实参与类型形参不兼容!!求解决
#include "stdafx.h"#include<iostream>
using namespace std;
template <typename t,typename t1>
t* hs(t a[],t1 b);
template <>char* hs(char a[],int b);
int main()
{
char *ip[]={"acx","qdasdcxwq","qwaazs","qwdax","oiuhuhsxaih9i"};
int d=5;
hs(ip,d);
cin.get();
return 0;
}
template<>char*hs(char a[],int b)
{
for(int l=0;l<5;l++)
{
cout<<strlen(a);//编译器提示:类型实参与类型形参不兼容。想不出来哪里出了问题!!!!
}
}
template<>char*hs(char a[],int b)这是你的定义的函数,(char a[],int b)这个就是形参, char *ip[]={"acx","qdasdcxwq","qwaazs","qwdax","oiuhuhsxaih9i"};这是你调用你写的函数,"acx","qdasdcxwq","qwaazs","qwdax","oiuhuhsxaih9i"这个是实参,你的实参用5个,你的形参实际上才定义(char a[],int b)两个,即a[]和b,而且定义的类型还不同,一个字符型,一个整型,而你实参里面都是一些字符型。所以问题就知道出现在哪了,建议把形参和实参再看一遍。
PS:你的代码,特别是template <>char* hs(char a[],int b)这个名字,真不是一般的。。。 参数char a[]
所以a类型是char
而strlen()函数的参数类型是char*,不是char.
所以strlen(a)报错
页:
[1]