gpt4 book ai didi

c++11 - 无法在 std::map 中使用 std::shared_ptr 作为值类型?

转载 作者:行者123 更新时间:2023-12-01 11:42:24 25 4
gpt4 key购买 nike

我有以下类,我想将其作为 shared_ptr 添加到 map

struct texture_t
{
hash32_t hash;
uint32_t width;
uint32_t height;
uint32_t handle;
};

所以我尝试使用 make_pair 然后将它添加到 map...

auto texture = std::make_shared<texture_t>(new texture_t());
std::make_pair<hash32_t, std::shared_ptr<texture_t>>(hash32_t(image->name), texture);

make_pair 上,我收到以下编译错误:

error C2664: 'std::make_pair' : cannot convert parameter 2 from 'std::shared_ptr<_Ty>' to 'std::shared_ptr<_Ty> &&'

我觉得我遗漏了一些明显的东西,有什么线索吗?

最佳答案

std::make_pair 不打算与显式模板参数一起使用。别管他们了:

auto my_pair = std::make_pair(hash32_t(image->name), texture);

注意:对 make_shared 的调用也是错误的。参数被传递给 texture_t 的构造函数,所以在这种情况下它只是:

auto texture = std::make_shared<texture_t>();

关于c++11 - 无法在 std::map 中使用 std::shared_ptr 作为值类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18433262/

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