[英]Copy&Swap idiom warning : recursive on all control paths, function will cause runtime stack overflow
[英]“recursive on all control paths, function will cause runtime stack overflow” on overloaded << operator
我有一段代码在编译时似乎有递归警告,为什么有什么主意?
ostream& operator << (ostream& out, const node& rhs)
{
out << rhs.get_data();
return out;
}
它正在调用此函数:
node::value_type node::get_data() const
{
return data;
}
这只是一个猜测,因为您尚未发布独立的示例。 特别地, node
的定义将非常有用。
我认为,出于某种原因,编译器可能选择使用隐式转换构造函数将rhs.get_data()
转换为node
,而不是选择operator<<
需要node::value_type
的重载。 你应该:
operator<<
之前声明了operator << (ostream&, node::value_type)
。 node
有一个采用value_type
的构造函数,那么最好使其explicit
以避免意外的隐式转换。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.