我是智能指针的新手,并且正在碰到每个绊脚石。
我有一个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
的参数即可。