2016-02-29 2 views
1

Учитывая следующий простой код:Получить указатель на текущий элемент BOOST_FOREACH

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

Мой вопрос, это делает ptrToMyClass теперь указывает на временной объект или реальный объект в списке. Если это первый случай, есть ли способ получить указатель на объект в списке вместо временной переменной, созданной циклом BOOST_FOREACH?

ответ

1

Поскольку декларация, object будет копией, а не объектом в списке. Попытайтесь использовать ссылку,

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

Итак, если мы объявим ее как ссылку, я буду перебирать элементы в списке непосредственно, а не создавать копии, которые вы имеете в виду? – redobot

+0

@redobot Да, конечно. – songyuanyao

 Смежные вопросы

  • Нет связанных вопросов^_^