operator << C++中的类为类中的类重载

Dan*_*man 0 c++ operator-overloading operator-keyword

我有以下课程:

class mypipe {
    class node {
        public:
            char ch;
            node* next;

            node(){...}
            node(char c){..}
    } ;      
public:
    unsigned int size;
    node* head;
Run Code Online (Sandbox Code Playgroud)

我需要重载运算符<<,以便像现在一样打印mypipe.

然后,我正在尝试编写以下内容:

friend ostream& operator<< (ostream& stream, mypipe p)  {
     node* curr = p.head -> next;
...
Run Code Online (Sandbox Code Playgroud)

变量定义后立即.
问题是我收到错误"标识符节点未定义".
我试图声明运算符并在类之外实现它,这没有帮助.

有没有人有任何想法?
提前感谢任何可以帮助的人:)

Ara*_*raK 5

node 是一个内部类,这意味着你必须限定它的类型:

mypipe::node* curr = p.head -> next;
Run Code Online (Sandbox Code Playgroud)