| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 418 人关注过本帖
标题:急需解决
只看楼主 加入收藏
vczxz
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2007-10-27
收藏
 问题点数:0 回复次数:6 
急需解决
template <class T>
T max(T x,T y)
#include <iostream.h>
{
return(x>y)?(x):(y);
}
double max(double ,double);//重载了一个double类的函数为什么这一个题还是不能运行
void main()
{
int x=3,y=4;
long l=5;
double a=1.1,b=3.4;
cout<<max(x,y)<<endl;//调用int max(int ,int)
cout<<max(a,b)<<endl;//调用double max(double ,double)
cout<<max(l,a)<<endl;//调用double max(double ,double)
cout<<max(a,l)<<endl;//调用double max(double ,double)
cout<<max(x,l)<<endl;//调用double max(double ,double)
}
会C++的人给我指点一个啊
我快发了一个月了

搜索更多相关主题的帖子: double max cout endl int 
2007-10-29 22:50
negatlov
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2007-10-29
收藏
得分:0 

我在学习中。。。不知道噢


我爱你--老婆
2007-10-29 23:19
chen17981
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2007-10-26
收藏
得分:0 

首先,你定义了函数模板,你为什么还要在声明double max(double ,double)函数呢?

其次,我建议你编译你的代码,看看出错的消息是什么。


2007-10-30 07:17
vczxz
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2007-10-27
收藏
得分:0 
听我说一句
我定义的模版是处理两个相同类型的数据,如果是double 和int那又怎办呢
所以我重载了一个double类型的函数 不知道大哥听说过隐式转换没有,如果像上题的long 和int类型的则调用重载double max(double ,double)(自考本科本上这么说的是刘振安主编的)自考本科书上在讲模板时这是一个例题,但是在vc++6.0上就是调不出来,一直报错为类型不想同。
我就是想搞清楚在模板这一知识点上有没有这一说法
这在自考书上这么看过,来请大家求证一下;
原题是这么说的一字不错:
template <class T>
T max(T x,T y)
{
return(x>y)?(x):(y);
}
double max(double ,double);//重载模板函数
//也可使用原型int max(int,int)
//只能从其中选择一个
#include "iostream.h"
void main()
{
int x=3,y=4;
long l=5;
double a=1.1,b=3.4;
cout<<max(x,y)<<endl;//调用模板int max(int ,int)
cout<<max(a,b)<<endl;//调用模板double max(double ,double)
cout<<max(l,a)<<endl;//调用重载double max(double ,double)
cout<<max(a,l)<<endl;//调用重载double max(double ,double)
cout<<max(x,l)<<endl;//调用重载double max(double ,double)
}
程序最后输出为:
4
3.4
5
5
5
2007-10-30 16:51
vczxz
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2007-10-27
收藏
得分:0 
,0,0,0" width="500" height="350">" />
2007-10-31 12:33
vczxz
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2007-10-27
收藏
得分:0 
怎么没有人说话啊

2007-10-31 12:35
zhuliyan
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2007-10-15
收藏
得分:0 

只要定义的是double型,自然可以将int转换过去
就是隐式转换
在区分就属画蛇添足了
定义下面的模板函数
加上<cmath>头文件即可
template<typename Type>
Type max1(Type a,Type b)
{
return max(a,b);
}
template<typename T>
T max1(T a,T b,T c)
{
b=max1(a,b);
c=max1(b,c);
return c;
}
在自定义函数时不要使用
系统函数名,如max()
2007-10-31 14:32
快速回复:急需解决
数据加载中...
 
   



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

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