运营商LT;< C ++中为类中的类重载

时间:2011-09-18 13:28:02

标签: c++ operator-overloading operator-keyword

我有以下课程:

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

            node(){...}
            node(char c){..}
    } ;      
public:
    unsigned int size;
    node* head;

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

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

friend ostream& operator<< (ostream& stream, mypipe p)  {
     node* curr = p.head -> next;
...
变量定义后立即<。> 问题是我收到错误“标识符节点未定义” 我试图声明操作符并在类之外实现它,这没有帮助。

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

1 个答案:

答案 0 :(得分:5)

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

mypipe::node* curr = p.head -> next;