ok this is an abridged version of what i've got:
Code:
template <typename T> class List
{
    public:

        ...

        class Iterator;

    private:

        class Node;

        Node *head, *tail;
};

template <typename T> class List<T>::Node
{
    public:

        ...

    private:

        T data;
        Node *next, *prev;
};

template <typename T> class List<T>::Iterator
{
    public:

        Iterator(Node* n) : node(n) {}
       ~Iterator() {}

        Iterator& operator++()
        {
            if (node != NULL)
            {
                node = node->next;
            }
            return(*this);
        }

        Iterator& operator++(int)
        {
            Iterator i(*this);
            ++(*this);
            return(i);
        }

    private:

        Node *node;
};
as you can see, this is a doubly linked-list template class. My question is how can I implement an Iterator in a List member function?

For example, if I have display() function, how do I use an Iterator for list traversal?