callback); void shareMyFoo() { ca-6ren">
gpt4 book ai didi

c++ - 如何在 C++ 中通过我的应用程序共享 "this"实例?

转载 作者:太空狗 更新时间:2023-10-29 20:29:47 29 4
gpt4 key购买 nike

假设我有:

class Foo
{
public:
Foo(std::function< void(std::shared_ptr< Foo >) > callback);

void shareMyFoo()
{
callback(std::make_shared< Foo >(this));
}

....
};

shareMyFoo()被调用时,某人将有机会复制共享指针。不幸的是,因为它会死——也就是说,它的引用计数器下降到 0——,它会杀死我的 Foo。我想阻止 Foo免于自杀。

我想到了一个字段 std::shared_ptr< Foo > sharedSelf_Foo ,我会在构造函数中初始化,但这也很便宜。

更一般地说,假设我实例化了一个指向对象的指针并将其存储在一个共享指针(例如auto foo = std::make_shared< Foo >())中,稍后该实例想要将其自身作为共享指针传递。如何全局更新 ref 计数器?

注意:我希望/需要在我的应用程序中保留我的签名/我的 shared_ptr 参数。

最佳答案

您必须继承自 std::enable_shared_from_this (n3242 §20.7.2.4)。

auto p = (new Foo) -> shared_from_this ();

关于c++ - 如何在 C++ 中通过我的应用程序共享 "this"实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8984428/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com