2014-01-12 55 views
0

我有一个奇怪的错误(STD敌不过 '操作< <' ::法院< < BigReal ::运算符 - ()())执行此操作时:C++超载<<和一元减

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

+3

取代BigReal及以const BigReal与您的运营商<< –

+1

'常量常量常量常量常量常量const' ... –

回答

2

表达式-D创建一个临时对象。一个临时对象可以绑定到const引用。因此,改变运营商< <通过以下方式

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