小编Lar*_*mer的帖子

如何防止删除用作共享指针的原始指针?

我为C ++类实现了C-API,该类使用其他对象的共享指针来访问它们。在我的C-API中,我当然只能获得原始指针。因此,我将C-API中的原始指针“转换”为共享指针,然后将其与C ++类方法一起使用:

method(std::shared_ptr<dataType>(raw-pointer));
Run Code Online (Sandbox Code Playgroud)

现在,我遇到的问题是,在“方法”的末尾,总是会调用共享指针析构函数,并且不幸的是,它杀死了我的原始指针指向的对象(我不想要)。因此,如何防止原始指针被杀死?

我已经尝试过像reset()或swap()这样的共享指针功能,但是它们都没有让我的原始指针走...

method(std::shared_ptr<dataType>(raw-pointer));
Run Code Online (Sandbox Code Playgroud)

预期的结果是,此函数返回后,原始指针e仍指向有效对象。实际上,原始指针然后指向已删除的对象。

c++ shared-ptr c-api raw-pointer

1
推荐指数
1
解决办法
126
查看次数

标签 统计

c++ ×1

c-api ×1

raw-pointer ×1

shared-ptr ×1