错误:"运算符>>"不匹配
error: no match for ‘operator>>’
我只是在尝试一个关于异常处理的例子。我收到错误错误:"运算符>>不匹配我的程序出了什么问题。我正在使用 linux gcc。
#include<iostream>
using namespace std;
void div(double, double);
void read (double *, double *);
main()
{
double a,b;
cout<<"enter the two nos";
cin>>a>>b;
read(&a,&b);
div(a,b);
}
void div(double a, double b)
{
double d;
try {
if(b==0)
throw "divide by zero condition occured";
d=a/b;
cout<<"divsion of two no is"<<d<<endl;
}catch(const char *e)
{
cout<<"exception is "<<e<<endl;
}
}
void read(double *a,double *b)
{
cout<<"Enter the 2 no.";
cin>>a>>b;
}
我还尝试了另一个读取函数
void read(double *a,double *b)
{
double c,d;
cout<<"Enter the 2 no.";
cin>>c>>d;
a=c;
b=d;
}
但它也有错误:
无法在赋值中将"双精度"转换为"双精度*">
变量a
是指向double
的指针。
变量c
是一个double
。
表达式a = c;
将double
分配给指向double
的指针。
尝试: *a = c;
void read(double *a,double *b)
{
cout<<"Enter the 2 no.";
cin>>a>>b;
}
将其更改为
void read(double *a,double *b)
{
cout<<"Enter the 2 no.";
cin>>*a>>*b;
}
因为对象cin
有一个名为 operator>>
的方法,该方法被重载以处理不同类型的数据。就像operator>>(short& __n)
为short
数据类型获取输入一样,operator>>(float& __f)
为float
数据类型获取输入。但是该方法的重载版本没有double*
作为参数。在代码中a
和b
double*
.因此,取消引用a
和b
返回double
并且有一个重载版本的operator>>
,它将double
作为operator>>(double& __f)
的参数。因此,将cin>>a>>b
更改为cin>>*a>>*b
将按预期工作。
void read(double *a,double *b)
{
double c,d;
cout<<"Enter the 2 no.";
cin>>c>>d;
a=c;
b=d;
}
这不起作用,因为您要更改指针指向的值,而不是指针本身,从而导致错误。将其修复为:
void read(double *a,double *b)
{
double c,d;
cout<<"Enter the 2 no.";
cin>>c>>d;
*a=c;
*b=d;
}
当然,在这种情况下,我不建议使用指针,最好使用引用,因此不需要取消引用,您可以像read(a,b)
这样调用它:
void read(double &a,double &b)
{
double c,d;
cout<<"Enter the 2 no.";
cin>>c>>d;
a=c;
b=d;
}
double& b
表示法表示按引用传递。您的其他读取函数也遇到了同样的问题,请将其修复为:
void read(double *a,double *b)
{
cout<<"Enter the 2 no.";
cin>>*a>>*b;
}
或更好:
void read(double &a,double &b)
{
cout<<"Enter the 2 no.";
cin>>a>>b;
}
您需要在指针处赋值:
*a=c;
*b=d;
相关文章:
- Qt SQLite没有查询或参数计数不匹配
- 模板参数推导失败,函数参数/参数不匹配
- 在使用累加时,C++中的运算符+不匹配
- C++ 与操作员不匹配<<
- 在 Arduino 上使用 sscanf 会导致与 const char * 不匹配,并且返回值始终相同,尽管输入值不同
- 与'operator='不匹配(操作数类型'String'且"void")
- C++模板/别名 - 模板参数列表中参数 1 处的类型/值不匹配
- C4018:类内有符号、无符号不匹配
- 我在 .h 中有一个枚举类,并且在.cpp错误中有一个运算符重载:与"运算符<<不匹配
- 为什么我收到错误:"运算符<<不匹配?
- RE2 不匹配非 ASCII 字符
- 函数签名与调用的函数不匹配,常量字符[]和字符*之间的区别?
- 模板推导:为什么函数指针模板定义在常量和/或引用时不匹配?
- 错误:"模板<类_Tp,类_Dp>类 std::unique_ptr"的模板参数列表中参数 1 的类型/值不匹配
- OpenSSL fips in C++ wrapper Library 如何?错误:指纹不匹配
- 为什么我的数组值与此处的全局变量不匹配?
- 引号之间匹配/不匹配,带有不可避免的引号和多行
- 映射迭代器与运算符不匹配
- C++调用和定义不匹配
- 模板专用化与派生类不匹配