模糊重载函数引用

时间:2015-07-20 17:13:48

标签: c++

有人可以帮助我理解为什么这两个函数调用是不明确的:

int             greater(int i, int j)           { return ( i > j ? i : j); }
double          greater(double x, double y)     { return ( x > y ? x : y); }

int main(){
int          i = 10,         j = 5;
double       x = 7.7,        y = 14.5;
cout << greater(i, j);
cout << greater(x, y);
}

g ++的确切错误是:

reference to ‘greater’ is ambiguous cout << greater(i, j);

这是Pohl教授关于C程序员C ++的优秀书籍。我正在使用g ++(GCC)4.9.2进行编译。 谢谢, Mainecat

1 个答案:

答案 0 :(得分:8)

根据您的使用情况,这两个功能不明确。

由于这个(假定的)行,你得到一个错误:

using namespace std;

此行使您的函数不明确,因为std::greater现在是候选。

Avoid using namespace std;