2013-11-22 45 views
0

我試圖建立一個列表。 當我嘗試到達類「Iterator」類中的字段「節點」時,出現問題。C++中的嵌套類不工作

#include <iostream> 
using namespace std; 

template<typename T> 
class List{ 

    class Node; 
    Node* head; 
    Node* first; 
    int size; 

public: 
    class Iterator; 
    List(): head(new Node), first(new Node), size(0){}; 
    void insertFirst(T& element); 
    void insertFirst(T element); 
    int getSize(); 
    Iterator& begin(); 
}; 

template<class T> 
class Iterator{ 
    friend class List<T>; 
    typename List<T>::Node* node; 
    List<T>* list; 

public: 
    Iterator(List<T> src):node(NULL), list(&src){} 
}; 

template<class T> 
typename List<T>::Iterator& List<T>::begin(){ 
    Iterator it(*this); 
    it.node=first; <--- ***right here*** 
    return it; 
} 

我收到「Field'node'could not be resolved」。

我不知道我的代碼有什麼問題。

如果有人能幫上忙,我會非常感謝。

+0

嘗試將其定義爲'class List :: Iterator {...};'。 – rightfold

+0

在你標記的行之前的行上,嘗試指定Iterator的模板參數:'Iterator it(* this);' – Turix

回答

0

類型typename List<T>::Iterator已聲明但未定義。您定義了一個完全獨立的類型,名稱有點類似。您可能要寫

template <typename T> 
class List<T>::Iterator { 
    // ... 
};