gpt4 book ai didi

c++ - 嵌套类指针访问

转载 作者:行者123 更新时间:2023-11-28 07:34:03 25 4
gpt4 key购买 nike

我是 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
}

};

在我的删除函数中,我试图删除列表中出现在迭代器之前的成员,唉,我收到一条错误消息

node/list fields could not be resolved

我曾尝试将迭代器作为 Iterator& 或 Iterator 类型传递,但均无效。

非常感谢任何反馈。

最佳答案

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

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

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

关于c++ - 嵌套类指针访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17090130/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com