Halorouge 2019-10-07 10:14 采纳率: 100%
浏览 319
已采纳

C++PrimerPlus第六版第八章第6题求助

题目意思是:
建立一个通用的函数模板,由一个T类型元素数组,和一个该数组元素个数的整数来作为两个参数,然后返回这个数组中最大的元素。
在使用时,用一个6个元素的int数组和4个元素的double数组来调用该模板。代码执行到这里都没问题。
但是题目还要求定义一个具体化,将char指针数组和这个指针数组中的指针数量作为参数,返回该数组中指向的字符串中最长的那一个的指针(对应字符串的地址)。使用5个字符串指针组成的数组进行测试。
我的运行结果就是,无论怎么改字符串,最后返回的总是数组中最后一个字符串的地址。之后我在具体化函数定义里加了一些标记,然后执行发现这些标记根本不显示,就是说函数重载模板都是载入的通用模板而不是具体化模板,但我不知道怎么解决这个问题。
编译器是Dev-C++ 5.11
代码如下:

#include<iostream>
using namespace std;
#include<cstring>
template<typename T>
T maxn(const T * t,int size);
template <char *> char* maxn(const char* t[], int size);
int main(void){
    int tt[6]={5,48,92,107,25,66};
    double td[4]={44.5,97.8475,54.6,81.1};
    const char  *tp[] = {"Good Game","Happy life","Lt.Jonason","little one","Why so serious?"};
    cout << "tt.max = " << maxn(tt,6) << endl;
    cout << "td.max = " << maxn(td,4) << endl;
    const char *maxc = maxn(tp,5);
    cout << "tp.max = " << maxc << endl;
    return 0;
}
template<typename T>
T maxn(const T * t,int size){
    T max = t[0];
    for(int i = 1;i < size; i++)
        if(*(t+i)>max)
            max = *(t + i);
    return max;
}
template <char *> char* maxn(const char* t[], int size){
    char* max = t[0];
    for(int i = 1 ; i < size ;i++){
        if(strlen(max) < strlen(t[i])){
            cout << endl << max << " " << t[i] << endl;
            strcpy(max,t[i]);           
        }
    }
    return max;
}

展开全部

  • 写回答

1条回答 默认 最新

  • dabocaiqq 2019-10-08 01:38
    关注
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
编辑
预览

报告相同问题?

悬赏问题

  • ¥15 全志t113i启动qt应用程序提示internal error
  • ¥15 ensp可以看看嘛.
  • ¥80 51单片机C语言代码解决单片机为AT89C52是清翔单片机
  • ¥60 优博讯DT50高通安卓11系统刷完机自动进去fastboot模式
  • ¥15 minist数字识别
  • ¥15 在安装gym库的pygame时遇到问题,不知道如何解决
  • ¥20 uniapp中的webview 使用的是本地的vue页面,在模拟器上显示无法打开
  • ¥15 网上下载的3DMAX模型,不显示贴图怎么办
  • ¥15 关于#stm32#的问题:寻找一块开发版,作为智能化割草机的控制模块和树莓派主板相连,要求:最低可控制 3 个电机(两个驱动电机,1 个割草电机),其次可以与树莓派主板相连电机照片如下:
  • ¥15 潜在扩散模型的Unet特征提取
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部