我正在设计一个必须获得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)’
答案 0 :(得分:7)
您使用<unsigned char[]>
模板作为参数,<char[]>
模板作为成员。
编译器甚至根本不认为它们是同一个类。如果您计划使用std::move
之类的模板函数,请使用完全相同的类型。