如何转动boost :: shared_ptr<>进入参考(&)?

时间:2011-04-14 05:51:21

标签: c++ pointers boost reference

所以我有一个使用带

等函数的引用(&)的类
void request(tcp::socket& socket); 

我开始将我的所有代码迁移到boost::shared_ptr<tcp::socket>,但我真的想知道如何将我的shared_ptrs转换为引用,以便能够使我的代码逐个函数地逐步演变而不是在一次迭代中改变所有我进入shared_ptr。那么如何将shared_ptr转换为引用呢?

2 个答案:

答案 0 :(得分:13)

首先,它们不是被称为链接,而是引用。 :)
其次,boost::shared_ptr可以像普通指针一样被解除引用:

boost::shared_ptr<tcp::socket> p(new tcp::socket());
// can be done in two steps (dereference, pass)
tcp::socket& socket_ref = *p;
request(socket_ref);
// or one step
request(*p);
//      ^ -- dereference the shared_ptr

答案 1 :(得分:1)

boost::shared_ptr<tcp::socket> sock;

...

if (sock) request( *sock )

我认为最好重写request()(如果可以的话),以便它可以处理boost::shared_ptr或一般指针。

相关问题