在我的課,我有兩個私有成員:我可以得到一個指向當前的重複值
std::list<MyObject> objects;
MyObject *selecteObj;
當事件發生時,我想通過列表進行迭代和運行某種測試即會只在列表中的某個項目上產生真實。我想保存一個指向該項目的指針以供其他地方使用。
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
迭代器。
是否有可能檢索迭代器內部存儲以供其他位置使用的指針?
我在想這個不對嗎?
完成我想要做的事情的正確方法是什麼?
當然你的意思是'std :: addressof(* i)',不是嗎? OP沒有詢問如何調用該對象的'&'-operator ... – 2011-12-23 17:38:08
@KerrekSB:我想,你的意思是'std :: addressof'(而不是'std :: address_of'),不是嗎? :P – Nawaz 2011-12-23 17:40:30
@Nawaz:哦,我*說了什麼? ;-) – 2011-12-23 17:42:31