SDL_Surface *作为c ++中的构造函数参数

时间:2014-07-17 15:41:23

标签: c++ pointers constructor sdl

将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:更清楚地说明什么是无法正常工作

1 个答案:

答案 0 :(得分:0)

我发现了问题。我的问题是我的表面在初始化实体后初始化,这意味着指针仍然是NULL。把它翻过来然后就可以了!