【发布时间】:2018-12-17 19:15:25
【问题描述】:
我正在使用 C 库并希望将对象指针转换为 shared_ptr。假设 C 库有...
T* CreateObject();
void DoStuff(T*);
void DestroyObject(T*);
那我可以……
std::shared_ptr<T> sptr(CreateObject(), DestroyObject);
虽然我可以将 CreateObject 方法中的指针放入 shared_ptr,并使用自定义删除器调用 DestroyObject 方法,但存在访问原始指针以调用 DoStuff 的问题。我注意到 shared_ptr::get() 方法,但据我所知,它已在 C++17 中被删除。
【问题讨论】:
-
我很确定
.get()仍然存在 -
除非您特别需要共享所有权,否则您可能需要考虑改用
std::unique_ptr。
标签: c++ c++17 shared-ptr