首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

如何处理重载输出运算符时的无穷递归有关问题

2013-01-09 
如何避免重载输出运算符时的无穷递归问题我写了一个类variable,这个类提供了从double隐式转换为该类的能力

如何避免重载输出运算符时的无穷递归问题
我写了一个类variable,这个类提供了从double隐式转换为该类的能力(提供了接受一个double作为参数的复制构造函数和赋值运算符重载),现在的问题是,对输出运算符的重载面临一个隐式转换从而陷入无穷递归的陷阱:


friend ostream& operator<<( const ostream &outStream, const variable &theVariable)
{
      return outStream<<(theVariable.Value());
}

由于可以从double隐式转换为variable,这导致了无穷递归从而栈溢出,可否有解决方法啊,求助。

[解决办法]
template <class _Elem, class _Traits>
friend basic_ostream<_Elem, _Traits>& operator<<(const basic_ostream<_Elem, _Traits> &outStream, const variable &theVariable)
{
      return outStream<<(theVariable.Value());
}

热点排行