我有这个代码打印行:
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 ::但这没有帮助。我不确定我还能尝试什么。
答案 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`