【发布时间】:2013-09-08 10:54:41
【问题描述】:
在我的代码中,我有一个动态分配的普通指针
class Texture
{
//code...
SDL_Texture* m_texture;
};
我有来自 Texture 类的 Init() 函数分配了 SDL_Texture*,并且析构函数释放了内存。
然而,这被证明是一个问题。我必须使用 shared_ptr,因为我对不同的对象使用相同的纹理,这将被破坏,因此不允许我正确显示它们(在向量中的第一个对象被破坏后,纹理(为所有相同类型的对象共享) ) 不见了)。
所以我决定使用 shared_ptr,但我有一个问题 - 我不知道如何为 shared_ptr 分配一些东西:
//Old code:
m_texture = loadTexture();
//New code:
class Texture
{
std::shared_ptr<SDL_Texture> m_texture;
};
//code...
m_texture = loadTexture(); // Error! No assignment operator
我试过 .get() 函数,但它是右值,所以我不能给它分配任何东西。有什么想法吗?
提前致谢。
【问题讨论】:
-
试试.reset()方法
-
loadTexture()返回什么? -
其实我在上面写代码时犯了一个小错误(in post),但没关系。代码看起来像 m_texture.reset(SDL_CreateTextureFromSurface(renderer, loadedSurface)); SDL_CreateTextureFromSurfacce 返回 SDL_Texture* PS。因为我尝试使用 .reset(),所以我这样做了:m_texture.reset(SDL_CreateTextureFromSurface(renderer,loadedSurface));还有甜蜜的模板错误,我完全不知道这是什么意思。对不起,糟糕的评论,但我不知道如何格式化它(还)
标签: c++ pointers c++11 std shared-ptr