嵌套类指针访问

Nested class pointer access

本文关键字:访问 指针 嵌套      更新时间:2023-10-16

我对c++相当陌生,在我尝试创建链表时,我遇到了一个我不理解的错误。

代码:

    template <typename T>
class List{
    class Node{
            T data;
        Node<T> *next;
        Node<T> *previous;
        Node<T>(T& data,const Node<T> *next,const Node<T> *previous): data(data),
                    next(next),previous(previous){
            };
            };
    Node<T> *head;
    Node<T> *tail;
    int size;
public:
    class Iterator{
            Node<T> *node;
            List<T> *list;
             };
    void List<T>::remove(List<T>::Iterator& It){
        if(It.list!=this){ // FIELD list COULD NOT BE RESOLVED
            throw NON_MATCHING_LIST();
        }
        if(size==0 || It.node=tail){ //FIELD node COULD NOT BE RESOLVED
            throw ELEMENT_NOT_FOUND();
        }
        It.node->previous=It.node->next; //FIELD node COULD NOT BE RESOLVED (and naturally the rest).
        It.node->next->previous=It.node->previous
    }

};

在我的remove函数中,我试图删除列表中正好在迭代器之前的成员,唉,我得到了一个错误,说

节点/列表字段无法解析

我已经尝试传递迭代器类型iterator &

感谢您的反馈

除了其他人在对问题的评论中提到的问题外,似乎您的(第一个)问题是您需要使用typename消歧器:

    typename List<T>::Iterator
//  ^^^^^^^^

这告诉编译器应该将Iterator解析为类型的名称,而不是List<T>的数据成员的名称。