我正在使用 C 库,并希望将对象指针隐藏到共享指针。假设 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 中被删除了。
shared_ptr::get()
在 C++17 中仍然存在。
它的定义是只是精炼了。
在 C++17 之前,
shared_ptr<T>::get()
返回 T*
。从 C++17 开始,它返回 std::remove_extent_t<T>*
。
此更改是为了反映
boost::shared_ptr
的 数组处理。
您仍然可以使用它。