c++ - 在 C++ 中移动 unique_ptr

标签 c++ unique-ptr

我正在设计一个类,它必须获得 unique_ptr 的所有权并用它做某事。这是代码的最小化版本:

block .h:

class Chunk {
public:
    Chunk(std::unique_ptr<unsigned char[]> contents);
    std::unique_ptr<char[]> contents;
};

block .cpp:

Chunk::Chunk(std::unique_ptr<unsigned char[]> content): 
             contents(std::move(content)){ }

但由于这个错误无法编译:

no matching function for call to ‘std::unique_ptr<char []>::unique_ptr(std::remove_reference<std::unique_ptr<unsigned char []>&>::type)’

最佳答案

您正在使用 <unsigned char[]>模板作为参数和 <char[]>模板作为成员。

编译器甚至根本不将它们视为同一个类。如果您打算使用类似 std::move 的模板函数,请使用完全相同的类型与它。

关于c++ - 在 C++ 中移动 unique_ptr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34766064/

相关文章:

c++ - 为什么在 C++ 中在公共(public)成员之下定义私有(private)成员?

c++ - 您可以在 Windows 可执行文件中执行逻辑的最后一个地方是什么?

c++ - 如何从喜欢的列表中制作复制构造函数

c++ - 在 C++ 中复制具有多态成员的对象

c++ - 将 char* 传递给 pthread_read 函数

c++ - 这是一个有效的 makefile 吗?

c++ - 用 iota 初始化一个 unique_ptr 的容器

c++ - 唯一指针如何保证唯一性?

c++ - 动态分配数组的 unique_ptr 替代方案

c++ - 如何使用对 vector 元素的 unique_ptr 引用?