我有以下打印代码行:

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


现在,由于“它”是一个复杂的类型,我需要编写自己的“ <这是我的功能:

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


我收到错误消息“无法解析ostream类型”
我试过在“ ostream”之前添加std ::,但这无济于事。我不确定还能尝试什么。

最佳答案

您需要#include <ostream>(如果使用C ++ 03,<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

关于c++ - ostream和<<重载的问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21064382/

10-10 21:35