gpt4 book ai didi

c++ - shared_ptr 类型转换

转载 作者:太空狗 更新时间:2023-10-29 19:46:59 34 4
gpt4 key购买 nike

class Object { };
Class Derived : public Object { };

boost::shared_ptr<Object> mObject(new Derived); // Ok

但是如何将其转换为 boost::shared_ptr<Derived>

我试过类似的东西:static_cast< boost::shared_ptr<Derived> >(mObject)但它失败了。

唯一可行的想法是:

boost::shared_ptr<Derived> res(new dynamic_cast<Derived*>(mObject.get()))

最佳答案

不要将转换结果传递给新的 shared_ptr 构造函数。这将导致两个 shared_ptr 认为他们拥有该对象,并且都将尝试删除它。结果将是双重释放,并且可能会崩溃。

shared_ptr 有 cast functions专门为此。

关于c++ - shared_ptr 类型转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5126537/

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