将SDL_Surface *传递给类构造函数时遇到了一些问题,然后用它来渲染它。有问题的课程类似于以下内容:
class Entity{
public:
Entity(int posX, int posY, int width, int height,SDL_Surface* surf);
SDL_Surface* getSurface();
private:
int x,y;
int w,h;
SDL_Surface* entSurface;
}
Entity::Entity(int posX, int posY, int width, int height,SDL_Surface* surf){
x=posX;
y=posY;
w=width;
h=height;
entSurface=surf;
}
SDL_Surface* Entity::getSurface(){
return entSurface;
}
我就像这样使用它
SDL_Surface* surface=new SDL_Surface();
surface=loadBMP("path/to/img.bmp");
Entity someEntity=Entity(0,0,10,10,surface);
程序编译并运行没有问题,但以下 DOESN' T 呈现实体:
while(Running){
//render(SDL_Surface* destination,SDL_Surface* src,int x,int y);
//render() is a function that blits the surface
render(theWindow,someEntity.getSurface(),0,0);
}
但是这很好看
while(Running){
render(theWindow,surface,0,0);
}
所以我想知道为什么我的指针没有像我想要的那样传递给类。我对指针的概念很新,但我不明白为什么地址不能这样传递。
感谢任何帮助!
编辑:评论请求显示loadBMP
SDL_Surface* loadBMP(char* File) {
SDL_Surface* Surf_Temp = NULL;
SDL_Surface* Surf_Return = NULL;
if((Surf_Temp = SDL_LoadBMP(File)) == NULL) {
return NULL;
}
Surf_Return = SDL_DisplayFormat(Surf_Temp);
SDL_FreeSurface(Surf_Temp);
return Surf_Return;
}
编辑2:更清楚地说明什么是无法正常工作
答案 0 :(得分:0)
我发现了问题。我的问题是我的表面在初始化实体后初始化,这意味着指针仍然是NULL。把它翻过来然后就可以了!