如何将boost :: shared_ptr <>转换为引用(&)?

Rel*_*lla 11 c++ boost pointers reference

所以我有一个类使用带有函数的引用(&)

void request(tcp::socket& socket); 
Run Code Online (Sandbox Code Playgroud)

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

Xeo*_*Xeo 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
Run Code Online (Sandbox Code Playgroud)

  • 你不需要调用`get`,你可以简单地做`request(*p)` (2认同)