0

我正在调用一个模板来查找两个值中的最小值代码是:

#include<iostream>
#include <cstdlib>

using namespace std;

template<class T>
T min(T a,T b)
{
    return (a<b)?a:b;
}


int main(int argc, char** argv) {
int d,y;
std::cout<<"enter two integer values";
std::cin>>d>>y;
cout<<"you entered"<<d<<y;
std::cout<<"the minimum of the two is "<<min(d,y);
float p,q;
std::cout<<"enter float values";
std::cin>>p>>q;
cout<<"you entered"<<p<<q;
std::cout<<"the minimum of the float values is "<<min(p,q);
char w,a;
std::cout<<"enter the two characters";
std::cin>>w>>a;
cout<<"you entered"<<w<<a;
std::cout<<"the minimum of the two characters is "<<min(w,a);
return 0;

}

它说对 ovrloaded 函数的调用不明确

4

3 回答 3

1

std::min您收到错误是因为在 namespace 中有一个名为 defined 的标准函数std,您的程序允许编译器在没有显式引用的情况下使用它。

消除

using namespace std;

并在缺少的地方添加std::限定符以cout解决此问题。

在 ideone 上编译的程序演示

于 2013-09-21T11:34:30.737 回答
1

消除

using namespace std;

因为 std 中还有另一个 min() 函数。

于 2013-09-21T11:35:48.350 回答
0

用于::min(d,y)表示您引用全局命名空间中的函数。

于 2013-09-21T11:54:29.810 回答