C++过载<<和一元减号

C++ overload << and unary minus

本文关键字:lt 一元 过载 C++      更新时间:2023-10-16

执行此操作时,我有一个奇怪的错误(与 std::cout <<BigReal::operator-()() 中的"运算符<<"不匹配):

cout<<(-D);

其中<<重载如下:

ostream & operator<<( ostream &c, BigReal &n )
{
    c << n.nume << "=" << "[" << n.nr << "]  ";
    return c;
}

和一元 - 作为:

BigReal BigReal::operator-( void )
{
    float negativ = atof( nr );
    char buff[ 1000 ];
    sprintf( buff, "%f", -negativ );
    //strcpy( nr, buff );
    BigReal Rez(buff, "Nr.");
    return Rez;
}

D是一个大真实。

表达式

-D 创建一个临时对象。临时对象可以绑定到常量引用。因此,请按以下方式更改运算符<<

ostream & operator<<( ostream &c, const BigReal &n );