2016-02-29 35 views
1

考慮以下簡單的代碼:得到一個指向當前BOOST_FOREACH元素

list<MyClass> m_listOfOBjects; 
.... 
MyClass* ptrToMyClass; 
BOOST_FOREACH(MyClass object, m_listOfObjects) 
{ 
     ptrToMyClass = &object 
} 

我的問題,是確實的ptrToMyClass現在指向一個時間對象或在列表中的真正對象。如果是第一種情況,有什麼方法可以獲取指向列表中對象的指針,而不是由BOOST_FOREACH循環創建的時間變量?

回答

1

作爲聲明MyClass object,object將是一個副本,而不是列表中的對象。嘗試使用參考,

BOOST_FOREACH(MyClass& object, m_listOfObjects) 
{ 
     ptrToMyClass = &object; 
} 
+0

因此,如果我們聲明它作爲參考,我將直接迭代列表中的元素,而不是創建副本,你的意思是? – redobot

+0

@redobot是的,當然。 – songyuanyao