我有一段代码在编译时似乎有一个递归警告,任何想法为什么?
ostream& operator << (ostream& out, const node& rhs)
{
out << rhs.get_data();
return out;
}
正在调用此函数:
node::value_type node::get_data() const
{
return data;
}
答案 0 :(得分:3)
这只是一个猜测,因为你没有发布一个自包含的例子。特别是,node
的定义非常有用。
我认为,出于某种原因,编译器选择将rhs.get_data()
转换为node
,可能使用隐式转换构造函数,而不是选择需要operator<<
的重载node::value_type
。你应该:
operator << (ostream&, node::value_type)
operator<<
node
的构造函数需要value_type
,那么最好使其explicit
以避免意外的隐式转换。