2012-02-24 136 views
0

我寫的二叉樹的模板類:迭代器模板二叉樹

template <class T> 
class Tree { 
public: 
    Tree():head_(NULL),size_(0){} 
    ~Tree(); 
    bool isEmpty()const {return size_ == 0;}; 
    bool insert(const T& ele); 
    bool remove(const T& ele); 
    size_t size() {return size_;} 
public: 

    class inorder_iterator 
    { 
     inorder_iterator& operator++(); 
    private: 
     Node<T>* cur_; 
    }; 
} 

什麼是運營商把定義++(我不能老是編譯使用以下)

template <class T> 
Tree<T>::inorder_iterator& 
Tree<T>::inorder_iterator::operator++() 
{ 
    //.... 
} 
+2

第二段代碼的第三行是否以源代碼中的Tree> T>開頭? – 2012-02-24 16:25:42

回答

2

隨着這些變化?它編譯:

template <class T> 
class Node {}; 

template <class T> 
class Tree { 
    Node<T> head_; 
    size_t size_; 
public: 
    Tree():head_(NULL),size_(0){} 
    ~Tree(); 
    bool isEmpty()const {return size_ == 0;}; 
    bool insert(const T& ele); 
    bool remove(const T& ele); 
    size_t size() {return size_;} 
public: 

    class inorder_iterator 
    { 
     inorder_iterator& operator++(); 
    private: 
     Node<T>* cur_; 
    }; 
}; 

template <class T> 
typename Tree<T>::inorder_iterator& 
Tree<T>::inorder_iterator::operator++() 
{ 
    //.... 
} 
+0

它不是明確的 – Yakov 2012-02-24 17:10:57

+0

現在它是好的 - 謝謝 – Yakov 2012-02-24 17:13:45

+0

你可以解釋typename鍵的需要嗎? – Yakov 2012-02-24 17:14:39