C++ 为什么我不能创建唯一指针
当我试图创建一个唯一的指针时,我得到了c2664错误 我确实编写了复制构造函数和赋值运算符,但仍然不断出现2664错误C++ 为什么我不能创建唯一指针,c++,c++11,c++14,C++,C++11,C++14,当我试图创建一个唯一的指针时,我得到了c2664错误 我确实编写了复制构造函数和赋值运算符,但仍然不断出现2664错误 class UndoCopyPaste : public UndoRedo { private: Container containerValue; bool valid; public: UndoCopyPaste() = default; UndoCopyPaste(Container*
class UndoCopyPaste : public UndoRedo
{
private:
Container containerValue;
bool valid;
public:
UndoCopyPaste() = default;
UndoCopyPaste(Container* cont, std::string type);
UndoCopyPaste(Container trans, Container* cont, std::string type);
};
class UndoRedo
{
private:
std::string type;
protected:
Container* container;
public:
UndoRedo() = default;
UndoRedo(Container* cont, std::string undoType);
};
std::unique_ptr<UndoCopyPaste> undoCopyPastePointer = std::make_unique<UndoCopyPaste>(new UndoCopyPaste()); // error C2664: 'UndoCopyPaste::UndoCopyPaste(UndoCopyPaste &&)': cannot convert argument 1 from '_Ty' to 'const UndoCopyPaste &'
类UndoCopyPaste:公共UndoRedo
{
私人:
集装箱价值;
布尔有效;
公众:
UndoCopyPaste()=默认值;
撤消复制粘贴(容器*cont,std::字符串类型);
UndoCopyPaste(容器传输,容器*cont,标准::字符串类型);
};
类撤消重做
{
私人:
std::字符串类型;
受保护的:
集装箱*集装箱;
公众:
UndoRedo()=默认值;
UndoRedo(容器*cont,std::字符串undoType);
};
std::unique_ptr undoCopyPastePointer=std::make_unique(新的UndoCopyPaste());//错误C2664:“UndoCopyPaste::UndoCopyPaste(UndoCopyPaste&&)”:无法将参数1从“\u Ty”转换为“const UndoCopyPaste&”
此代码与一起使用,使\u唯一
:
x = std::make_unique<Foo>(a, b);
相当于:
x = std::unique_ptr<Foo>(new Foo(a, b));
std::unique_ptr<UndoCopyPaste>(new UndoCopyPaste(new UndoCopyPaste()));
因为
new UndoCopyPaste()
是一个右值。删除新操作符,您的意思是auto-undocypestpointer=std::make_unique()代码>关于回滚编辑,C++标签不是没有必要的,因为这是C++问题。此外,OP可以自由指定其代码需要支持的标准版本。
std::unique_ptr<UndoCopyPaste>(new UndoCopyPaste(new UndoCopyPaste()));
std::make_unique<UndoCopyPaste>();