gpt4 book ai didi

c++ - 使用 unique_ptr 作为值初始化静态 std::map

转载 作者:可可西里 更新时间:2023-11-01 18:26:14 59 4
gpt4 key购买 nike

如何初始化静态映射,其中值为 std::unique_ptr

static void f()
{
static std::map<int, std::unique_ptr<MyClass>> = {
{ 0, std::make_unique<MyClass>() }
};
}

当然这是行不通的(std::unique_ptr 的复制构造器被删除)。

这可能吗?

最佳答案

问题是从 std::initializer-list 构建复制其内容。 (std::initializer_list 中的对象本质上是 const)。要解决您的问题:您可以从一个单独的函数初始化 map ...

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;
}

然后调用它

static void f()
{
static std::map<int, std::unique_ptr<MyClass>> mp = init();
}

查看Live On Coliru

关于c++ - 使用 unique_ptr 作为值初始化静态 std::map,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38213088/

59 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com