【发布时间】:2021-01-11 07:05:02
【问题描述】:
给定以下代码:
std::map<std::string, std::unique_ptr<Obj>> objs;
std::string str;
Obj obj;
std::unique_ptr<Obj> objUniquePtr = std::unique_ptr<Obj>(new Obj(obj));
objs.insert({ str, objUniquePtr }); <<<<<<<< ERROR
我收到以下错误:
no matching function for call to 'std::map<std::__cxx11::basic_string<char>, std::unique_ptr<Obj> >::insert(<brace-enclosed initializer list>)'
我该如何解决这个错误?
【问题讨论】:
-
附带说明 - 默认构造一个本地
Obj实例只是为了new另一个带有它的Obj实例是多余的。改用std::unique_ptr<Obj> objUniquePtr(new Obj);,或者更好:auto objUniquePtr = std::make_unique<Obj>();
标签: c++ c++11 compiler-errors unique-ptr