将对象的唯一指针添加到地图

问题描述 投票:0回答:2

我正在尝试添加唯一的映射指针。

auto monkey= std::unique_ptr<Animal> (new Animal(1,"Tom"));

std::map<int, std::unique_ptr<const Animal>> animals;    //Map of animals

animals.insert(pair<int, unique_ptr<Animal>>(1,monkey));    // Error here


Error:error: no matching function for call to 'std::pair<int, std::unique_ptr<Animal> >::pair(int&, std::unique_ptr<Animal>&)'

添加它的方式是什么?

c++ compiler-errors stl unique-ptr
2个回答
4
投票

[std::unique_ptr不可复制,但可以移动,必须std::move


1
投票

[我建议您在尝试将std::unique_ptr插入std::map时使用以下内容:

© www.soinside.com 2019 - 2024. All rights reserved.