两个人 发表于 2015-5-11 00:50:40

无法解析外部符号

#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;
        }

}

仰望天上的光 发表于 2015-5-11 00:50:41

template <typename t,typename t1>
void hs(t a[],t1 b);
并没有给出一般性的函数末班定义,仅仅给出了
template <>void hs(char a[],int b); 特化的函数定义

然而调用的时候
hs(ip,5);这里ip类型并不是char[],而是char*[],这两种类型不能隐式转换,所以必须使用该函数模板的一般性定义,但你没给。。。所以报错。

ryxcaixia 发表于 2015-5-13 09:09:53

#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;
}

代码编译通过

回锅丶肉 发表于 2015-6-6 00:27:35

混鱼币
混鱼币

caster 发表于 2015-6-18 19:27:23

看看

caster 发表于 2015-6-19 09:07:14

!!!

溯月0503 发表于 2015-6-19 11:04:52

hs(&ip,5);

caster 发表于 2015-6-22 00:07:20

混!!!!

小名明SIU 发表于 2015-6-23 16:51:36

楼主都这么多天了也不知道设置成已解决

caster 发表于 2015-6-25 13:12:39

??

nin98 发表于 2015-7-8 19:13:20

你的实参是指针,形参是不能声明为数组模式的
页: [1]
查看完整版本: 无法解析外部符号