2014-01-12 58 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);