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

前端之家收集整理的这篇文章主要介绍了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将尝试删除对象.

猜你在找的C&C++相关文章