C ++ - 使用嵌套类中的类'元素?

时间:2012-08-23 06:09:29

标签: c++ visibility nested-class

好的,我有一个类LinkedList,它有一个嵌套类LinkedListIterator。在LinkedListIterator的方法中,我引用了LinkedList的私有字段。我认为这是合法的。但是我得到了错误:

from this location

每次我引用它们。

我在封闭类的字段中收到相应的错误消息:

invalid use of non-static data member 'LinkedList<int>::tail'

知道为什么吗?相关代码如下:

template<class T>
class LinkedList {

    private:
        //Data Fields-----------------//
        /*
         * The head of the list, sentinel node, empty.
         */
        Node<T>* head;
        /*
         * The tail end of the list, sentinel node, empty.
         */
        Node<T>* tail;
        /*
         * Number of elements in the LinkedList.
         */
        int size;

    class LinkedListIterator: public Iterator<T> {

            bool add(T element) {

                //If the iterator is not pointing at the tail node.
                if(current != tail) {

                    Node<T>* newNode = new Node<T>(element);
                    current->join(newNode->join(current->split()));

                    //Move current to the newly inserted node so that
                        //on the next call to next() the node after the
                        //newly inserted one becomes the current target of
                        //the iterator.
                    current = current->next;

                    size++;

                    return true;
                }

                return false;
            }

1 个答案:

答案 0 :(得分:2)

你不能只使用那样的非static成员。我认为以下示例将清除问题:

LinkedList<int>::LinkedListIterator it;
it.add(1);

currenttail在方法中会是什么?没有LinkedList的实例可言,所以这些成员甚至还不存在。

我不是说让成员static,这是错误的,但重新考虑你的方法。

了解std迭代器是如何的。