Итератор для шаблона двоичного дерева - PullRequest
0 голосов
/ 24 февраля 2012

Я пишу шаблонный класс для двоичного дерева:

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++ ()
{
    //....
}

1 Ответ

2 голосов
/ 24 февраля 2012

С этими изменениями компилируется:

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++ ()
{
    //....
}
...