注册 登录
编程论坛 C++教室

对重载函数的调用不明确?

Kipling 发布于 2013-08-30 20:53, 735 次点击

程序代码:
#include<iostream>
using namespace std;
template <typename T>
T max(T b,T c)
{
    return b>c?b:c;
   

}
int main()
{
    int i1=185,i2=-76,i3=567,i;
    double d1=56.87,d2=90.23,d3=-3214.78,d;
    i=max(i2,i3);
    d=max(d2,d3);
    cout<<i<<' '<<d<<endl;
    system("pause");
}
此处编译出现错误,提示为对重载函数的调用不明确.
程序代码:
#include<iostream>
using namespace std;
template <typename T>
T max(T a,T b,T c)
{
    return b>c?b:c;
   

}
int main()
{
    int i1=185,i2=-76,i3=567,i;
    double d1=56.87,d2=90.23,d3=-3214.78,d;
    i=max(i1,i2,i3);
    d=max(d1,d2,d3);
    cout<<i<<' '<<d<<endl;
    system("pause");
}
是编译通过的,不明白,求解
4 回复
#2
rjsp2013-08-31 10:21
因为编译器不知道选STL中的std::max,还是你自己定义的::max
简而言之:重名

#3
额外覆盖2013-08-31 10:23
我试了一下,在vc++6.0里可以编译通过,但是在VS2010里就不行了
但是将max改为其他就行


[ 本帖最后由 额外覆盖 于 2013-8-31 10:26 编辑 ]
#4
额外覆盖2013-08-31 10:27
回复 2楼 rjsp
stl中有max这个函数啊  能给我一份资料吗?
#5
rjsp2013-08-31 10:41
以下是引用额外覆盖在2013-8-31 10:27:17的发言:

stl中有max这个函数啊  能给我一份资料吗?

http://en.
1