执行此操作时出现奇怪的错误(std::cout << BigReal::operator-()() 中的 '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 是一个 BigReal。
最佳答案
表达式 -D 创建一个临时对象。临时对象可以绑定(bind)到 const 引用。所以改变运营商<<以下方式
ostream & operator<<( ostream &c, const BigReal &n );
关于C++ 重载 << 和一元负号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21079627/