在class内部,获得this指针的shared_ptr,需要class继承std::enable_shared_from_this,示例代码如下:

#include <memory>
#include <iostream>

class SharedTest :public std::enable_shared_from_this<SharedTest>
{
  public:
    SharedTest(int v) : std::enable_shared_from_this<SharedTest>(),
                        val(v)
    {
        std::cout << \"SharedTest,val = \" << val << std::endl;
    }

    void SelfShared()
    {
        auto self_ptr = shared_from_this();
        std::cout << \"SelfShared, val = \" << val << \", use_count = \" << self_ptr.use_count() << std::endl;
    }

    ~SharedTest()
    {
        std::cout << \"~SharedTest,val = \" << val << std::endl;
    }

    int val = 0;
};

int main()
{
    auto tt = std::make_shared<SharedTest>(123);
    tt->SelfShared();
    return 0;
}

输出结果而如下:

SharedTest,val = 123
SelfShared, val = 123, use_count = 2
~SharedTest,val = 123
收藏 打印