我在类上有一个方法可以使特定实例成为“事件”实例:
void makeActive() { activeInstance = this; }
但是自activeInstance
起它就不起作用了。类型为 std::shared_ptr< ClassName >
.我怎么投 this
至 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++ - 将 'this' 转换为 std::shared_ptr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27894246/