在c ++中移动unique_ptr

时间:2016-01-13 11:55:12

标签: c++ unique-ptr

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

Chunk.h:

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

Chunk.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)’

1 个答案:

答案 0 :(得分:7)

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

编译器甚至根本不认为它们是同一个类。如果您计划使用std::move之类的模板函数,请使用完全相同的类型。