2015-07-20 3 views
1

Могут кто-то помочь мне понять, почему этот 2 вызов функции неоднозначен:неоднозначной ссылка перегруженной функции

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); 
} 

Точная ошибка с г ++ является:

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

Это из замечательной книги профессора Pohl на C++ для программистов C. Я компилирую с g ++ (GCC) 4.9.2. спасибо, Mainecat

ответ

8

С вашим использованием, эти две функции не неоднозначные.

Вы получаете ошибку из-за этого (предполагается) линии:

using namespace std; 

Эта линия делает вашу функцию неоднозначным, поскольку std::greater теперь кандидат.

Avoid using namespace std;

+0

Добро пожаловать на переполнение стека, кстати. –

+0

Спасибо, я многому научился. – LACat

Смежные вопросы