0 c++ iterator loops class list
我在这里遇到了一个问题,我以为我可以在互联网上找到一个简单的答案,但已经过了 1 小时了,我无法解决它。看起来很简单,但我找不到方法......
我有2节课:
#include <iostream>
#include <list>
using namespace std;
class classB;
class classA{
private :
string name;
list<classB*> listClassB;
public:
void getListClassB() const;
};
class classB{
private:
string name;
list<classA*> listClassA;
public:
void getListClassA() const;
};
Run Code Online (Sandbox Code Playgroud)
我对该getListClassB()
方法所做的是:
void classA::getListClassB() const {
for(list<classB*>::iterator it = listClassB.begin(); it != listClassB.end; it++){
//Stuff
}
}
Run Code Online (Sandbox Code Playgroud)
Visual Studio Code 告诉我有一个错误listClassB
来自list<classB*>::iterator it = listClassB.begin()
完整的错误是:
there is no appropriate user-defined conversion of
"std::_List_const_iterator<std::_List_val<std::conditional_t<true, std::_List_simple_types<classB *>, std::_List_iter_types<classB *, size_t, ptrdiff_t, classB **, classB *const *, classB *&, classB *const &, std::_List_node<classB *, void *> *>>>>\" in \"std::_List_iterator<std::_List_val<std::conditional_t<true, std::_List_simple_types<classB *>, std::_List_iter_types<classB *, size_t, ptrdiff_t, classB **, classB *const *, classB *&, classB *const &, std::_List_node<classB *, void *> *>>>>"
Run Code Online (Sandbox Code Playgroud)
编辑:
好的,再次感谢您的宝贵时间,但这个错误让我发疯。
我完成了一些代码,以便更明确地了解我的工作。
我不深入,因为这是法国的大学作业,而且是关于 UML 课程,所以它是与其他课程相关的课程......
首先,迭代器是一个指针语义对象,因此您必须取消引用它才能访问实际对象。it.str
没有意义,因为std::list<>::iterator
没有成员(即使有,也与类成员str
无关。str
Whatever
其次,您的列表元素本身就是指针,因此这意味着您需要第二个间接才能访问该str
成员:
std::cout << (*(*it)).str;
Run Code Online (Sandbox Code Playgroud)
更吸引人的语法是:
std::cout << (*it)->str;
Run Code Online (Sandbox Code Playgroud)