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&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...