c – 共享ptr铸造
发布时间:2020-12-16 10:18:23 所属栏目:百科 来源:网络整理
导读:class Object { };Class Derived : public Object { };boost::shared_ptrObject mObject(new Derived); // Ok 但是如何将它强制转换为boost :: shared_ptr Derived ? 我尝试过类似的东西:static_cast升压:: shared_ptr的衍生GT; (mObject),它失败了. 唯一
class Object { }; Class Derived : public Object { }; boost::shared_ptr<Object> mObject(new Derived); // Ok 但是如何将它强制转换为boost :: shared_ptr< Derived> ? 我尝试过类似的东西:static_cast<升压:: shared_ptr的<衍生GT; >(mObject),它失败了. 唯一的工作理念是: 升压:: shared_ptr的<衍生GT; res(new dynamic_cast< Derived *>(mObject.get())) 解决方法
不要将强制转换的结果传递给新的shared_ptr构造函数.这将导致两个shared_ptrs认为他们拥有该对象,并且两者都会尝试删除它.结果将是双重免费,并且可能是崩溃.
shared_ptr专门为此设置了cast functions. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |