c++ - 将 'this' 转换为 std::shared_ptr

标签 c++ c++11 shared-ptr

我在类上有一个方法可以使特定实例成为“事件”实例:

void makeActive() { activeInstance = this; }

但是自activeInstance 起它就不起作用了。类型为 std::shared_ptr< ClassName > .我怎么投 thisstd::shared_ptr<ClassName>

最佳答案

如果您的对象已经被一个shared_ptr拥有,您可以通过让您的对象继承自std::enable_shared_from_this来生成另一个shared_ptr

此代码将起作用:

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

如果你的对象还没有被shared_ptr拥有,那么你肯定不想在makeActive()中创建一个> 因为 shared_ptr 将在最后一个对象被销毁时尝试删除您的对象。

关于c++ - 将 'this' 转换为 std::shared_ptr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27894246/

相关文章:

c++ - 引用计数在 shared_ptr 中不起作用

algorithm - C++ 如何使 find_if 不仅返回应用 pred 为真的第一个对象

c++ - 自定义字节大小?

c++ - 这些方法中哪些是可能的/更有效的

c++11 - 在 C++ 中是否有更好的方法一次性执行一组代码而不是使用静态变量检查

抽象基类和派生类的工厂函数的 C++ 返回类型

c++ - 为 CreateDirectory 将 'const char*' 转换为 'LPCTSTR'

c++ - 在 C++ 中重新定义一个非虚函数

c++ - if 语句与 if-else 语句,哪个更快?

c++ - 使用智能指针的 C++ 中的 "Observer-Pattern"?