我是智能指针的新手,并且正在碰到每个绊脚石。

我有一个struct texture_t:

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

当我尝试使用此行为该结构创建shared_ptr时:
auto texture_shared_ptr = std::make_shared<texture_t>(new texture_t());

我收到此错误:
error C2664: 'mandala::texture_t::texture_t(const mandala::texture_t &)' : cannot convert parameter 1 from 'mandala::texture_t *' to 'const mandala::texture_t &'

此错误来自何处,如何避免该错误?

最佳答案

您不应该将new ed指针传递给 std::make_shared 。您只需要传递可从中构造texture_t的参数即可。

10-04 15:06