【问题标题】:How to get the raw pointer of a shared_ptr in C++17?如何在 C++17 中获取 shared_ptr 的原始指针?
【发布时间】: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 中被删除。

【问题讨论】:

标签: c++ c++17 shared-ptr


【解决方案1】:

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

它的定义是merely refined

在 C++17 之前,它返回 T*。从 C++17 开始,它返回 std::remove_extent_t&lt;T&gt;*

此更改是为了反映 boost::shared_ptrhandling of arrays

你仍然可以使用它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-07
    • 1970-01-01
    • 1970-01-01
    • 2021-11-15
    • 1970-01-01
    • 2021-11-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多