我正在设计一个类,它必须获得 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/