首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Objective-C++中的boost::shared_ptr

Objective-C++中的boost::shared_ptr
EN

Stack Overflow用户
提问于 2010-04-21 10:43:09
回答 2查看 949关注 0票数 2

这是对我之前提出的一个问题的更好的理解。

我有以下Objective-C++对象

代码语言:javascript
复制
@interface OCPP
{
    MyCppobj * cppobj; 
}
@end

@implementation OCPP

-(OCPP *) init
 {
   cppobj = new MyCppobj;
 }
 @end

然后我创建了一个完全不同的obj,它需要在boost::shared_ptr中使用cppobj (在这个问题上我没有选择,它是一个巨大的库的一部分,我不能改变它)

代码语言:javascript
复制
@interface NOBJ
-(void) use_cppobj_as_shared_ptr
{
    //get an OCPP obj called occ from somewhere..
    //troubling line here
}
@end

我尝试了以下方法,但都失败了:我尝试合成cppobj。然后我用下面的方法在“麻烦的线”中创建了一个shared_ptr:

代码语言:javascript
复制
MyCppobj * cpp = [occ cppobj];
bsp = boost::shared_ptr<MyCppobj>(cpp);

它第一次运行得很好。然后我销毁NOBJ然后重建它。当我为cppobj时,它已经消失了。据推测,shared_ptr决定不再需要它,并废除了它。

所以我需要帮助。怎样才能让cppobj保持存活?

有没有一种方法可以在不破坏cppobj的情况下销毁bsp (或者它对cppobj的引用)?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-04-21 10:51:31

shared_ptr支持自定义解除分配器。你能做的就是什么都不做。

代码语言:javascript
复制
void no_destroy(MyCppObj*)
{}

bsp = boost::shared_ptr<MyCppObj>(cpp, &no_destroy);
票数 3
EN

Stack Overflow用户

发布于 2010-04-26 23:26:40

为什么不使用OCPP中的boost::shared_ptr<MyCppObj> cppobj;而不是MyCppobj * cppobj;来存储MyCppObj的实例?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2679967

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档