gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:53:08 24 4
gpt4 key购买 nike

我在将 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);

程序编译和运行没有问题,但以下不会呈现实体:

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: 更清楚什么是无效的

最佳答案

我发现了问题。我的问题是我的表面在我初始化实体之后被初始化,这意味着指针仍然是 NULL。交换它,它成功了!

关于c++ - SDL_Surface* 作为 C++ 中的构造函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24808001/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com