如何在C++17中获取shared_ptr的原始指针?

问题描述 投票:0回答:1

我正在使用 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 中被删除了。

c++ c++17 shared-ptr
1个回答
4
投票

shared_ptr::get()
在 C++17 中仍然存在。

它的定义是只是精炼了

在 C++17 之前,

shared_ptr<T>::get()
返回
T*
。从 C++17 开始,它返回
std::remove_extent_t<T>*

此更改是为了反映

boost::shared_ptr
数组处理

您仍然可以使用它。

© www.soinside.com 2019 - 2024. All rights reserved.