我正在努力为这个运算符得到一个合适的回报(这不是我的代码,只是试图纠正它,我不像我应该用C ++来纠正它)可以有人帮我这个,它是为数字电路的高级设计定义的数据类型。
如何在没有错误的情况下返回此temp
,是否有任何特殊方法?
inline friend std::ostream& operator << ( std::ostream& os, const sc_float &v)
{
if (c_DEBUG) std::cout << "debug: operator << called " << endl; //debug
// fixme - this is only copy of sc_float2double function
double temp;
temp = (double)v.man / exp2(m_width);
temp += 1.0;
temp *= exp2((double)v.exp - exp2((double)e_width - 1.0) + 1.0);
temp *= (v.sign == true ? -1.0 : 1.0);
//os << "(" << v.sign << " , " << v.exp << " , " << v.man << ")"; // debug
os << temp;
}
因为我添加了返回操作系统;
我收到226个错误,指向systemC库和那里的实例。有没有人对systemC类做过流操作符的声明,或者有人知道它是如何完成的?
答案 0 :(得分:6)
您的功能缺少返回。 <<
运算符应返回对其正在使用的流的引用,以便您可以将操作链接在一起,如
cout << foo << bar << foobar;
要修复您的功能,只需返回您在函数中使用的ostream
inline friend std::ostream& operator << ( std::ostream& os, const sc_float &v)
{
//...
os << temp;
return os;// <-- this returns the stream that we are unsing so it can be used by other functions
}