问题与ostream和<<超载

时间:2014-01-11 15:53:42

标签: c++ operator-overloading ostream

我有这个代码打印行:

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

现在,因为'它'是一个复杂的类型,我需要编写自己的'&lt;&lt;&lt;运营商。 这是我的功能:

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

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

1 个答案:

答案 0 :(得分:3)

如果您使用的是C ++ 03,则需要#include <ostream><iostream>是不够的。)

如果你已经这样做了,使用了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