在C接口中使用shared_ptr?

Ale*_*ing 9 c c++ shared-ptr

我有一个C库,我正在移植到C++,大量使用手动引用计数的结构.我考虑过使用shared_ptr自动处理引用计数,但我也想维护C API.旧签名看起来像这样:

Object* object_create(void);
Object* object_retain(Object* o);
void object_release(Object* o);
Run Code Online (Sandbox Code Playgroud)

如果我使用shared_ptr,有没有办法在C API中有效地公开这个手动引用计数?

Fre*_*Foo 7

这个问题shared_ptr,因为你已经想通了,是不能修改的引用计数,除了通过构建或破坏的情况.所以不,没有办法让它工作,除非保持一个shared_ptr每个构造Object周围,​​直到它的引用计数降到零,但这样做需要重做大部分引用计数,所以你获得很少.

也许boost::intrusive_ptr是一个更好的选择.