[英]moving unique_ptr in c++
我正在设计一个必须获得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)’
您使用<unsigned char[]>
模板作为参数,使用<char[]>
模板作为成员。
它们甚至根本不被编译器视为同一类。 如果您计划使用std::move
等模板函数,请使用完全相同的类型。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.