小编dyr*_*dal的帖子

如何将派生对象置于地图中

我还是C++的新手,遇到了一个我似乎无法在地图中插入新派生类的问题.

我的代码简化如下:

std::map<int, std::unique_ptr<Base_Class> > m;

void func(){
  for(int num = 0; num < 100; n++){
    m.emplace(num, new Derived_Class() );
  }  

}
Run Code Online (Sandbox Code Playgroud)

这给了我这个:

error: no matching function for call to 'std::pair <const int, std::unique_ptr<Base_Class> >::pair(int&, Derived_Class*)
Run Code Online (Sandbox Code Playgroud)

我尝试过使用失败:

m.emplace(std::pair(num, new Derived_Class()) );
Run Code Online (Sandbox Code Playgroud)

这给了我这个:

error: no matching function for call to 'std::pair<const int, std::unique_ptr<Base_Class> >::pair(std::pair<int, Derived_Class*>)
Run Code Online (Sandbox Code Playgroud)

我似乎无法想出这个,并希望得到任何帮助.

c++ c++11

5
推荐指数
1
解决办法
237
查看次数

标签 统计

c++ ×1

c++11 ×1