Enemy类继承自Object类,使用Object类的构造函数加载图片...
Object::Object(SDL_Surface *imageFile,int x, int y, int w, int h)
{
image = imageFile;
}
因为我希望关卡类处理加载和删除图像,所以我将 Object 和 Enemy 类的析构函数留空...
关卡类为敌人图像初始化SDL_Surface并将图像加载到其中...
class Level : public StateManager
{
private:
SDL_Surface *enemyImage;
}
Level::Level(int levelNo)
{
enemyImage = loadImage("image/enemy.png");
}
然后,在关卡更新函数中,当敌人图像被推到敌人 vector 上时,敌人图像被传递给 Enemy 对象...
enemy.push_back(Enemy(enemyImage, 640, 200, 32, 32));
所以,我的问题是,当从 Level 对象加载的图像传递给 Enemy 对象时,它是在内存中创建它的新实例,还是指向关卡中加载的图像?
最佳答案
您所做的只是将指针复制到 SDL_Surface
对象;对象本身以及图像数据不会被复制。您应该小心管理共享资源。特别是,您应该确保您只为加载的每个 SDL_Surface
调用一次 SDL_FreeSurface()
。
关于c++ - 当传递给对象时,SDL_Surface 会在内存中存储图像的新实例,还是指向传递给它的图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8950599/