我试图将指针myTexture
的内容复制到指针texture
(类成员)中,如下面的代码所示:
Sprite::Sprite(SDL_Renderer *renderer, SDL_Texture *myTexture) {
// Initialize texture
this->texture = myTexture;
}
但是,我需要让texture
不仅指向与myTexture
相同的对象,因为我希望能够在不影响texture
的情况下修改myTexture
。我尝试过使用复制构造函数,但编译器说不允许使用不完整的类型。我不确定如何在不指向同一个对象的情况下创建此对象的副本。
提前感谢您的帮助。
答案 0 :(得分:4)
您不能调用复制构造函数,或者通常访问不完整类型的任何成员。毕竟,这是什么使它不完整;您不应该知道该类型甚至支持复制或其他任何内容。
我要说的只是包含整个类型,而不仅仅是向前声明它,并完成它。
编辑:我可能会补充一点,我们在这里讨论的是SDL纹理类型。 This type看起来甚至不支持复制。例如,它有" prev"和" next"指针和一个似乎指向渲染器对象的指针。几乎没有价值等级。
看起来你应该在这里重新考虑你的设计,真正的问题不是关于不完整的类型,而是"如何复制SDL_Texture
内容。"
答案 1 :(得分:0)
我想我找到了解决方案。它不是完全复制指针,但我所做的是,因为我使用SDL2,我将渲染目标更改为this->texture
,然后使用SDL_RenderCopy()
将原始纹理放在新纹理上。不幸的是,这是我发现的最简单的解决方案。