我有这段代码将
std::unique_ptr
返回给某种类型的东西。目前,我只是这样写:
return std::unique_ptr<Type1>(new Class<Type2>(
param1, param2, param3, std::move(param4), param5));
但是,有人告诉我最好使用
std::make_unique()
来编写它,因为它更安全。
我试着这样做:
return std::make_unique<Type1>(
param1, param2, param3, std::move(param4), param5);
但是当我这样做时,它会吐出一条错误消息:
错误:没有匹配的调用函数
我做错了什么吗?
在第一个示例中,您正在使用
Type1
的构造函数创建一个指向 Class<Type2>
的指针(或者它是一个拼写错误,它应该只是 Type2
?)。当你使用std::make_unique<Type1>(...)
时,它会尝试调用Type1
的构造函数。所以我的猜测是,如果你看到没有匹配的调用函数,你的Type1
只是没有能够接受参数的构造函数param1, param2, param3, std::move(param4), param5