0

我有一段代码在编译时似乎有递归警告,有什么想法吗?

ostream& operator << (ostream& out, const node& rhs)
    {
        out << rhs.get_data();
        return out;
    }

它正在调用这个函数:

node::value_type node::get_data() const
    {
        return data;
    }
4

1 回答 1

3

这只是一个猜测,因为您还没有发布一个独立的示例。特别是, 的定义node将非常有用。

我认为,出于某种原因,编译器选择转换rhs.get_data()为 a node,可能使用隐式转换构造函数,而不是选择需要的operator<<重载node::value_type。你应该:

  • 确保operator << (ostream&, node::value_type)在定义之前已声明operator<<
  • 如果node有一个构造函数value_type,那么最好explicit避免意外的隐式转换。
于 2012-09-05T06:49:44.997 回答