如何遍历指向Event对象的指针列表?C++迭代代码报错排查
问题解决方法
错误根源
报错信息明确指出:this->el是指针类型(EventList*,也就是list<Event*>*),所以访问它的成员函数begin()/end()必须用->运算符,而不是.。你觉得用箭头不是本意,核心问题是你可能误将类成员el声明成了指针,而非实际的EventList对象。
两种解决方案
方案1:修正成员声明(推荐)
找到CS302_Midi类中el的定义,将:
EventList* el;
修改为:
EventList el;
修改后,你的原遍历代码就能正常运行,无需使用箭头运算符,迭代器的解引用写法(*it)->key也是正确的——*it取出迭代器指向的Event*指针,再用->key访问Event对象的成员。
方案2:保留指针时的写法(不推荐)
如果因特殊需求必须让el保持指针类型,需调整遍历代码,用->访问指针的成员函数:
EventList::iterator it; for (it = this->el->begin(); it != this->el->end(); ++it){ cout << (*it)->key << endl; }
内容的提问来源于stack exchange,提问作者Ian Burns
相关产品推荐
相关产品推荐

