c++ - 如何从 vector 中弹出共享指针并转换为 unique_ptr

标签 c++ vector shared-ptr unique-ptr

我正在尝试从我的 vector 中弹出我的 shared_pointer 并转换为 unique_ptr。不幸的是,它给出了一条奇怪的编译信息。

IFCCB.cpp:

std::unique_ptr<IFC> IFCCCB::getElementVectorIFC()
{
    return (std::unique_ptr<IFC>(make_unique<IFC>(m_shpVectorIFC.pop_back())));
}

IFCCB.h:

public:
unique_ptr<IFC> getElementVectorIFC();

编译错误:

error C2784: 'enable_if::value,std::unique_ptr<_Ty,std::default_delete<_Ty>>>::type std::make_unique(_Types &&...)' : could not deduce template argument for '_Types &&' from 'void'

据我所知,我正在做我在其他地方看到的事情。

我看了make_unique info但它并没有给出一个很好的例子,而且unique_ptr use .有什么想法吗?

最佳答案

您不能将所有权从共享指针转移到唯一指针。一旦共享所有权,它就会保持共享状态。

如果您不需要与容器共享所有权,则存储唯一指针,或者如果需要,在从容器中移除后继续使用共享指针。

关于c++ - 如何从 vector 中弹出共享指针并转换为 unique_ptr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27823691/

相关文章:

c++ - 如何从集合中删除共享 ptr 元素?

c++ - 指向对象数据成员的 shared_ptr 是否使数据成员在对象的生命周期之后保持事件状态?

c++ - 从中创建 shared_ptr 后删除原始指针

c++ - 无法使用MediaInfo.h库实现MaxCLL,MaxFall,MasteringDisplayColorPrimaries参数定义

c++ - std::find 在一个 (unordered_map

c++ - 在现代 C++ 中,是否仍应使用 volatile 与 ISR 共享数据?

c++ - 如何对 vector 进行二进制搜索以查找具有特定 id 的元素?

c++ - 数组或图像中的唯一值数字

c++ - 很好的语法来获取对 vector/数组数据的大小引用?

python - 如何为 std::vector 数据的形状 View 编写 LLDB 合成提供程序