在SDL_blitsurface中使用SDL_Rect向量时出现c ++运行时错误

时间:2012-07-02 17:02:31

标签: c++ sdl codeblocks block

l SDL_BlitSurface(tileSheets.at(sheet),& clip [tile],screen,& tileBox);

工作得很好,我按照这样开始剪辑:

clip[ 0 ].x = x;
clip[ 0 ].y = y;
clip[ 0 ].w = 48;
clip[ 0 ].h = 48;
x += 48;
clip[ 1 ].x = x;
clip[ 1 ].y = y;
clip[ 1 ].w = 48;
clip[ 1 ].h = 48;

然而,这根本不起作用

SDL_BlitSurface(tileSheets.at(sheet), &clip.at(tile), screen, &tileBox);

我这样宣传他们:

for(int i = 0; i < number; i++)
    {
        SDL_Rect clipBox = {x,y,48,48};
        clip.push_back(clipBox);
    }

这是我得到的错误:http://imageshack.us/photo/my-images/836/83468944.png/

任何线索?

2 个答案:

答案 0 :(得分:0)

不知道变量剪辑的类型,但可能是您正在将堆栈中的变量推送到向量,因此一旦退出for循环的范围,它们就会变为无效。

答案 1 :(得分:0)

尝试以下方法之一:

 /* 1) */  SDL_Rect clipBox(x,y,48,48);
 /* 2) */  clip.push_back(SDL_Rect(x,y,48,48));