使用函数tempelate时,我只能将参考变量用作函数参数。
下面的程序(找到两个数字之间的最小值)工作正常。
asset-url
但是,当我更改以下功能时:
//Program to calculate minimum among two numbers
#include<iostream>
using namespace std;
template <class ttype>
//Using reference variables
//as function parameters
ttype min(ttype& a, ttype& b)
{
ttype res = a;
if (b < a)
res = b;
return res;
}
int main()
{
int a = 5, b = 10;
int mini = min(a, b);
cout << "Minimum is: " << mini << endl;
return 0;
}
我收到编译错误。
我们在使用函数模板时是否应该只使用引用变量?
答案 0 :(得分:2)
min
与std::min
冲突,因为您是using namespace std;
您可以执行以下操作来修复它,明确表示要使用所有命名空间之外的min
:
int mini = ::min(a, b);
或者,摆脱using
并且它有效。
这两个解决方案都适用于gcc,&
,没有它。
答案 1 :(得分:1)
这是因为min与std :: min冲突。要么为您的函数使用不同的名称,要么不使用“using namespace std”,或者将您的函数放在不同的命名空间中,或者使用它:
int mini = ::min(a, b);