gpt4 book ai didi

c++ - 来自指针的 shared_ptr

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

我有一个不能在堆上创建的类,它有私有(private)析构函数。

但是有一个函数返回指向这样构造的对象的指针。我想从中创建一个共享指针:

MyClass *GetMyClassPointer() {...}

boost::shared_ptr<MyClass> ptr;
ptr = boost::shared_ptr<MyClass>(GetMyClassPointer()); // [x]

error: ‘MyClass::~MyClass()’ is private

有什么办法吗?

最佳答案

是的。

听起来实例是由一个可以访问私有(private)构造函数(成员或 friend )的函数动态分配的。然后应该有一个公共(public)函数,用于在您使用完实例后清理该实例,该函数可以访问私有(private)析构函数(即使您没有)。

使用接受自定义删除器的 shared_ptr 构造函数,并将其连接到该类提供的清理函数(可能需要包装函数来获得匹配的签名)。

关于c++ - 来自指针的 shared_ptr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6557300/

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