C++,函数重载问题

fud*_*din 0 c++ overloading

我在这个例子中遇到了麻烦.每当我发送任何参数时,它都会给出编译错误:

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>
Run Code Online (Sandbox Code Playgroud)

我个人认为当我将参数作为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;
}
Run Code Online (Sandbox Code Playgroud)

小智 6

cin >> x回报cin,而不是x.尝试

cin >> a >> b;
add(a, b);
Run Code Online (Sandbox Code Playgroud)

语法cin >> a, b也是无效的,多次使用>>.


Mar*_*wis 5

代替

add(cin>>a,cin>>b);
Run Code Online (Sandbox Code Playgroud)

cin>>a;cin>>b;
add(a,b);
Run Code Online (Sandbox Code Playgroud)

流读取操作返回流,而不是读取的值.