执行此操作时,我遇到一个奇怪的错误(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。
答案 0 :(得分:2)
表达式-D创建一个临时对象。临时对象可以绑定到const引用。所以改变运算符&lt;&lt;以下方式
ostream & operator<<( ostream &c, const BigReal &n );