C ++重载<<和一元减去

时间:2014-01-12 20:03:26

标签: c++ reference operator-overloading

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

cout<<(-D);

其中&lt;&lt;超载如下:

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是BigReal。

1 个答案:

答案 0 :(得分:2)

表达式-D创建一个临时对象。临时对象可以绑定到const引用。所以改变运算符&lt;&lt;以下方式

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