微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c – 将“this”改为std :: shared_ptr

我有一个类上的方法来使特定实例成为一个“活动”实例:
void makeActive() { activeInstance = this; }

但是它不起作用,因为activeInstance具有类型std :: shared_ptr< ClassName&gt ;.如何将其转换为std :: shared_ptr< ClassName>?

解决方法

如果您的对象已由shared_ptr拥有,则可以通过使对象从 std::enable_shared_from_this继承而生成一个shared_ptr

这段代码将会工作:

void makeActive() { activeInstance = shared_from_this(); }

如果您的对象尚未由shared_ptr拥有,那么您确定不希望在makeActive()中创建一个对象,因为在最后一个被破坏时,shared_ptr将尝试删除对象.

原文地址:https://www.jb51.cc/c/113092.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐