3

我有以下课程,我想将其添加到 amap作为shared_ptr.

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> &&'

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

4

1 回答 1

5

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>();
于 2013-08-25T20:19:25.153 回答