оператор << перегрузка в C ++ для класса в классе - PullRequest
0 голосов
/ 18 сентября 2011

У меня есть следующие классы:

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

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

и мне нужно перегрузить оператор <<, чтобы напечатать mypipe, как сейчас. </p>

тогда я пытаюсь написать следующее:

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

сразу после определения переменных.
проблема в том, что я получаю ошибку "идентификатор узла не определен".
я пытался объявить оператор и реализовать его вне класса, это не помогло.

У кого-нибудь есть идеи по этому поводу?
заранее спасибо всем, кто может помочь :)

1 Ответ

5 голосов
/ 18 сентября 2011

node является внутренним классом, что означает, что вы должны определить его тип:

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