| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1845 人关注过本帖
标题:这个函数模板怎么不能用?
取消只看楼主 加入收藏
thanatus
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2006-8-16
收藏
 问题点数:0 回复次数:3 
这个函数模板怎么不能用?
这个是定义的一个函数模板,利用模板交换了两个整数a和b,但是编译不能通过,用的是dev-c++编译器,
编译提示:call of overloaded `swap(int&, int&)' is ambiguous ,请问这是为什么啊?

#include <iostream>

template <class any>

void swap(any &, any &);

int main()
{
    using namespace std;
   
    int a=3, b=4;
   
    cout<<"a="<<a<<" "<<"b="<<b<<endl;
   
    swap (a,b);
   
    cout<<"a="<<a<<" "<<"b="<<b<<endl;
   
    system("pause");
   
    return 0;
}

template <class any>
void swap (any &x, any &y)
{
     any temp;
     temp = x;
     x = y;
     y = temp;
     
}
搜索更多相关主题的帖子: 函数 模板 
2008-09-20 22:58
thanatus
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2006-8-16
收藏
得分:0 
我改过,没有用,不信你编译一下,确实可以用typename替换class,但我考虑了以后也许需要向后兼容,所以这里我用了class,再说整数类int,浮点类float本身也可以看作一个数据类,我用class也没有问题啊~
2008-09-20 23:12
thanatus
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2006-8-16
收藏
得分:0 
回复三楼,可以编译了~结果没有问题~多谢,我初学,但是我有很多问题不懂,以后向你多请教哈~
但是我以前也声明过swap函数(自己定义的,比如我利用指针交换两个数的时候),为什么那时候不报错啊?
这里的标准库是那个库?

[[it] 本帖最后由 thanatus 于 2008-9-20 23:16 编辑 [/it]]
2008-09-20 23:15
thanatus
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2006-8-16
收藏
得分:0 
[bo][un]守鹤[/un] 在 2008-9-20 23:19 的发言:[/bo]

调用时,改成swap1(a,b);试一下  我这没有那个VC环境
template也可以对多种类型的数据进行操作


改成swap1没有问题,我确实冲突了,改成int我刚才发帖之前试过,也没有用,
只有把swap改成swap1,但是我以前也给函数起过swap的名字呀~怎么这个时候不行了~唉~
2008-09-20 23:39
快速回复:这个函数模板怎么不能用?
数据加载中...
 
   



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

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