【问题标题】:issue with ostream and << overloadingostream 和 << 重载问题
【发布时间】:2014-01-11 15:53:41
【问题描述】:

我有这行打印代码:

 std::cout << *it << std::endl;

现在,由于 'it' 是一种复杂类型,我需要编写自己的 '

friend ostream& operator<<(ostream& os, const Node& n ){
    return os << n.key << ':' << n.value;
}

我收到错误“无法解析类型 ostream” 我尝试在“ostream”之前添加 std:: 但这没有帮助。我不确定我还能尝试什么。

【问题讨论】:

  • 下次你应该构造一个testcase。毫无疑问,在您需要在这里发帖之前,这已经解决了您的问题,如果您仍然需要在这里发帖,我们将有一些具体的问题需要检查。

标签: c++ operator-overloading ostream


【解决方案1】:

您需要#include &lt;ostream&gt;(如果您使用的是 C++03,&lt;iostream&gt; 是不够的)。

如果您这样做了,并且使用了std:: 限定前缀,那么您没有告诉我们某些事情,或者您正在编译错误的文件!


#include <ostream>   // for std::ostream
#include <iostream>  // for std::cout

struct Node
{
   int key;
   int value;
};

std::ostream& operator<<(std::ostream& os, const Node& n) {
    return os << n.key << ':' << n.value;
}

int main()
{
   Node n = {3, 5};
   std::cout << n << '\n';
}

// Output: `3:5`

Live demo

【讨论】:

  • 这实际上并不准确。在 C++11 中,iostream 需要包含 ostream。如果您不是针对 C++11,那么我完全忘记了规则是什么,但您不需要 Node n = { 3, 5 } 吗?
猜你喜欢
  • 2016-05-25
  • 2011-07-07
  • 1970-01-01
  • 1970-01-01
  • 2020-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多