2011-09-18 95 views
0

I類具有以下類:操作者<<過載在C++中

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; 
... 
變量定義後立即


問題是我得到一個錯誤「標識符節點未定義」。
我試圖聲明操作符並在類之外實現它,但沒有幫助。

沒有人有任何想法嗎?
在此先感謝的人誰可以幫助:)

回答

5

node是一個內部類,這意味着你必須限定其類型:

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

不僅因爲它是一個非成員函數。並且不需要假定節點是公共的。操作員是朋友 –

+0

@Armen Tsirunyan真的,我刪除了與第二點相關的部分。謝謝,我錯過了:) – AraK

+0

從未想過會是那麼容易..... 謝謝! –