所以我有一个使用带
等函数的引用(&)的类void request(tcp::socket& socket);
我开始将我的所有代码迁移到boost::shared_ptr<tcp::socket>
,但我真的想知道如何将我的shared_ptrs转换为引用,以便能够使我的代码逐个函数地逐步演变而不是在一次迭代中改变所有我进入shared_ptr。那么如何将shared_ptr转换为引用呢?
答案 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
或一般指针。