我正在调用一个模板来查找两个值中的min 代码是:
#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;
}
它表示对重载函数的调用是不明确的
答案 0 :(得分:1)
您收到错误,因为在命名空间std
中定义了一个名为std::min
的标准函数,您的程序允许编译器在没有显式引用的情况下使用它。
删除
using namespace std;
并将std::
限定符添加到cout
,以解决此问题。
答案 1 :(得分:1)
删除
using namespace std;
因为std。
中还有另一个min()函数答案 2 :(得分:0)
使用::min(d,y)
表示您引用全局命名空间中的函数。