C ++, проблема перегрузки функций - PullRequest
0 голосов
/ 28 декабря 2010

У меня возникла проблема в этом примере. Всякий раз, когда я посылаю какие-либо аргументы, выдается ошибка компилятора:

prog.cpp: In function ‘int main()’:
prog.cpp:11: error: call of overloaded ‘add(std::basic_istream<char, std::char_traits<char> >&, std::basic_istream<char, std::char_traits<char> >&)’ is ambiguous
prog.cpp:4: note: candidates are: int add(int, int) <near match>
prog.cpp:6: note:                 char add(char, char) <near match>

Лично я считаю, что эта ошибка должна возникать, когда я отправляю аргументы как int или charно когда я посылаю аргументы с плавающей точкой, ошибка все еще остается. Пожалуйста, помогите. Спасибо

/*Function Overloading*/
#include<iostream>
using namespace std;
int add(int a,int b);
float add(float a,float b);
char add(char a,char b);
int main()
{
float a,b;
  cout<<"Enter Two numbers to add them"<<'\n';
  add(cin>>a,cin>>b);
  return 0;
}
int add(int a,int b)
{
//cin>>a,b;
return a+b;
}
float add(float a,float b)
{
//cin>>a,b;
return a+b;
}
char add(char a,char b)
{
//cin>>a,b;
return a+b;
}

Ответы [ 2 ]

6 голосов
/ 28 декабря 2010

cin >> x возвращает cin, а не x. Попробуйте

cin >> a >> b;
add(a, b);

Также недопустим синтаксис, такой как cin >> a, b, используйте >> несколько раз.

5 голосов
/ 28 декабря 2010

вместо

add(cin>>a,cin>>b);

запись

cin>>a;cin>>b;
add(a,b);

Операция чтения потока возвращает поток, а не прочитанное значение.

...