Ответ в соответствии с запросом chryspi выше. Как отмечено в других ответах, вы не можете использовать ссылки напрямую, поскольку ссылки не существуют сами по себе.
Однако вы можете использовать ссылки, но с помощью служебного класса boost::reference_wrapper<T>
:
typedef boost::reference_wrapper<int> intref;
std::vector<intref> v;
int i;
i = 9;
v.push_back (boost::ref (i)); // store &i
int& j = v[0];
j = 10;
//v[0].get() = 10;
std::cout << i << std::endl; // prints 10
Я привожу в качестве примера, как изменить непосредственно элемент v[0]
. Обратите внимание, что это несколько сложно (вы должны вызвать метод get()
), потому что вы получаете boost::reference_wrapper<T>
вместо фактической ссылки.
Для безопасного хранения указателей относительно памяти вы можете использовать boost::shared_ptr
аналогичным образом.