【发布时间】:2011-12-23 17:27:13
【问题描述】:
在我的班级中,我有两个私人成员:
std::list<MyObject> objects;
MyObject *selecteObj;
当一个事件发生时,我想遍历列表并运行某种测试,该测试只会在列表中的一个项目上产生 true。我想保存一个指向该项目的指针以在其他地方使用。
std::list<MyObject>::iterator i;
for (i = objects.begin(); i!=objects.end(); ++i){
if (i->test())
selectedObj = i;
}
在其他地方用另一种方法
if (selectedObj !=null)
tmpObj->doSomething();
但这不起作用,因为i 不是指针,它是一个迭代器,即使您可以将它视为指向MyObject 的指针。
是否可以检索迭代器在内部存储的指针以供其他地方使用?
我是不是想错了?
完成我想做的事情的正确方法是什么?
【问题讨论】: