如何避免重载输出运算符时的无穷递归问题
我写了一个类variable,这个类提供了从double隐式转换为该类的能力(提供了接受一个double作为参数的复制构造函数和赋值运算符重载),现在的问题是,对输出运算符的重载面临一个隐式转换从而陷入无穷递归的陷阱:
friend ostream& operator<<( const ostream &outStream, const variable &theVariable)
{
return outStream<<(theVariable.Value());
}
template <class _Elem, class _Traits>
friend basic_ostream<_Elem, _Traits>& operator<<(const basic_ostream<_Elem, _Traits> &outStream, const variable &theVariable)
{
return outStream<<(theVariable.Value());
}