繁体   English   中英

将boost :: shared_ptr转换为实际的类

[英]Convert boost::shared_ptr to actual class

有人会这样做吗? 例如:

Client* client = it->second;

其中 - >第二个是boost :: shared_ptr到Client错误:

cannot convert `const ClientPtr' to `Client*' in initialization

boost :: shared_ptr有一个.get()方法来检索原始指针。

关于何时以及何时不使用它的文档: http//www.boost.org/doc/libs/1_44_0/libs/smart_ptr/shared_ptr.htm

您可以使用boost::shared_ptr上的get方法来检索指针,但要非常小心:从引用计数共享指针中提取裸指针可能很危险(如果引用计数达到零,将触发删除,从而使您的原始指针无效)。

boost:shared_ptr重载operator*

boost::shared_ptr< T > t_ptr(new T());
*t_ptr; // this expression is a T object

要获得指向t的指针,您可以使用get函数或使用*t_ptr地址:

&*t_ptr; // this expression is a T*

第一种方法(使用get )可能更好,并且开销更少,但它只适用于shared_ptr (或带有兼容API的指针),而不适用于其他类型的指针。

没有危险,但涉及到c-ctor。

Client client( *(it->second.get()) );

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM