yot*_*moo 1 c++ iterator vector
我正在尝试迭代一个持有指向Student类型对象的指针的向量.向量声明如下:static vector<Student*> students;
无论如何,我试图在函数pickWinners()中使用迭代器:
vector<Student*>::iterator p1 = students.begin();
vector<Student*>::iterator p2 = p1;
p2++;
Run Code Online (Sandbox Code Playgroud)
据我所知,p1是指向Student的指针.但是当我尝试这个时(例如):
*p1->print();
Run Code Online (Sandbox Code Playgroud)
我收到下一个错误:
Hire.cpp:192:错误:'*p1 .__ gnu_cxx :: __ normal_iterator <_Iterator,_Container> :: operator-> with _Iterator = Student**,_Container = std :: vector>'中成员'print'的请求,其中是非类型'学生*'使:* [Hire.o]错误1
这对我没有任何意义.我知道问题不在print()中.我试过了
Student *student = students.at(0);
student->print();
Run Code Online (Sandbox Code Playgroud)
一切都很完美.我在这里很无能为力,有什么想法吗?谢谢!
Cub*_*bbi 10
期望的结果将通过以下方式实现
(*p1)->print();
Run Code Online (Sandbox Code Playgroud)
在您的情况下,代码解析为*(p1->print());,因为operator->具有更高的优先级operator*,例如,参见维基百科上的优先级表