鱼C论坛

 找回密码
 立即注册
查看: 6638|回复: 2

类型实参与类型形参不兼容!!求解决

[复制链接]
发表于 2015-5-10 17:05:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#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[l]);//编译器提示:类型实参与类型形参不兼容。想不出来哪里出了问题!!!!
        }
}

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-5-13 18:16:14 | 显示全部楼层
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)这个名字,真不是一般的。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-5-13 20:42:28 | 显示全部楼层
参数char a[]
所以a[l]类型是char
而strlen()函数的参数类型是char*,不是char.
所以strlen(a[l])报错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-25 23:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表