vla*_*don 7 c++ initialization unique-ptr c++11
如何初始化静态地图,其中值是std::unique_ptr什么?
static void f()
{
static std::map<int, std::unique_ptr<MyClass>> = {
{ 0, std::make_unique<MyClass>() }
};
}
Run Code Online (Sandbox Code Playgroud)
当然这不起作用(std::unique_ptr删除copy-ctor ).
可能吗?
问题是从std::initializer-list复制其内容构建.(对象std::initializer_list本身就是const).要解决您的问题:您可以从单独的函数初始化地图...
std::map<int, std::unique_ptr<MyClass>> init(){
std::map<int, std::unique_ptr<MyClass>> mp;
mp[0] = std::make_unique<MyClass>();
mp[1] = std::make_unique<MyClass>();
//...etc
return mp;
}
Run Code Online (Sandbox Code Playgroud)
然后打电话给它
static void f()
{
static std::map<int, std::unique_ptr<MyClass>> mp = init();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1487 次 |
| 最近记录: |