| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 739 人关注过本帖
标题:模板重载问题
取消只看楼主 加入收藏
zzt_428
Rank: 2
来 自:南京师范大学
等 级:论坛游民
威 望:2
帖 子:243
专家分:22
注 册:2008-7-6
收藏
 问题点数:0 回复次数:1 
模板重载问题
麻烦各位看一下下面的程序.请多多指点.
douboe *pd[3];
//...
Show(pd,3);             //为什么不能与下面的Show(T *arr[], int n) 匹配?
//....
.........
template <typename T>
void Show(T *arr[], int n)
{
   //....
}

////////////////////////////////////////////////////////
完整的程序如下:

#include <iostream>
using namespace std;

template <typename T>
void Show(T arr[], int n);

template <typename T>
void Show(T *arr[], int n);

struct debts
{
    char name[50];
    double amount;
};

int main(void)
{
    int things[6]={301,302,303,304,305,306};
    struct debts debtsArr[3]=
    {
        {"Micheal Zhuang",2500.0},
        {"Echo She",2600.0},
        {"James He",2300.0}
    };

    double *pd[3];
    for(int i=0; i<3; i++)
        pd[i]=&debtsArr[i].amount;

    Show(things,6);

         cout << "Count infomation:\n";
    Show(pd,3);
    
    return 0;
}

template <typename T>
void Show(T arr[], int n)
{
    cout << "Using template A:\n";
    for(int i=0; i<n; i++)
        cout << arr[i] << "  ";
    cout << endl;
}

template <typename T>
void Show(T *arr[], int n)
{
    cout << "Using template B:\n";
    for(int i=0; i<n; i++)
        cout << *arr[i] << " ";
    cout << endl;
}
搜索更多相关主题的帖子: 模板 重载 
2008-09-09 05:15
zzt_428
Rank: 2
来 自:南京师范大学
等 级:论坛游民
威 望:2
帖 子:243
专家分:22
注 册:2008-7-6
收藏
得分:0 
###
编译器版本太低!
Show(pd,3);

void Show(T arr[], int n);
void Show(T *arr[], int n);
均能进行匹配,因此出现歧义.
在高级版本的编译器中,void Show(T *arr[], int n)是最佳匹配,编译可以通过。
2008-09-09 05:22
快速回复:模板重载问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017549 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved