如何将指针复制到不完整的类型 - C ++

时间:2014-07-30 18:29:31

标签: c++ pointers deep-copy sdl-2 incomplete-type

我试图将指针myTexture的内容复制到指针texture(类成员)中,如下面的代码所示:

Sprite::Sprite(SDL_Renderer *renderer, SDL_Texture *myTexture) {

    // Initialize texture
    this->texture = myTexture;
}

但是,我需要让texture不仅指向与myTexture相同的对象,因为我希望能够在不影响texture的情况下修改myTexture 。我尝试过使用复制构造函数,但编译器说不允许使用不完整的类型。我不确定如何在不指向同一个对象的情况下创建此对象的副本。

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:4)

您不能调用复制构造函数,或者通常访问不完整类型的任何成员。毕竟,这是什么使它不完整;您不应该知道该类型甚至支持复制或其他任何内容。

我要说的只是包含整个类型,而不仅仅是向前声明它,并完成它。


编辑:我可能会补充一点,我们在这里讨论的是SDL纹理类型。 This type看起来甚至不支持复制。例如,它有" prev"和" next"指针和一个似乎指向渲染器对象的指针。几乎没有价值等级。

看起来你应该在这里重新考虑你的设计,真正的问题不是关于不完整的类型,而是"如何复制SDL_Texture内容。"

答案 1 :(得分:0)

我想我找到了解决方案。它不是完全复制指针,但我所做的是,因为我使用SDL2,我将渲染目标更改为this->texture,然后使用SDL_RenderCopy()将原始纹理放在新纹理上。不幸的是,这是我发现的最简单的解决方案。