我从来没有真正理解过指针/引用,但在我编写的代码中,我得到一个错误说
Invalid arguments '
Candidates are:
int SDL_UpperBlit(SDL_Surface *, SDL_Rect *, SDL_Surface *, SDL_Rect *)
'
我真的应该先了解指针,但有人可以帮助我吗?
void MapManager::draw(SDL_Surface *surface, SDL_Surface &mainSurface, int x, int y){
SDL_BlitSurface(surface, NULL, mainSurface, new SDL_Rect{x, y, 32, 32});
}
用作
draw(img_brickImage, *inDisplay, x * TILE_SIZE, y * TILE_SIZE);
显示:
SDL_Surface* display;
这是
SDL_BlitSurface的签名:
int SDL_BlitSurface(SDL_Surface* src,
const SDL_Rect* srcrect,
SDL_Surface* dst,
SDL_Rect* dstrect)
请注意src
和dst
是如何SDL_Surface
指针的(SDL_Surface*
)。
您正在传递给dst
引用,SDL_Surface &mainSurface
,这不是指针。
您可以更改函数签名以接收指针(也可以更改调用它的位置):
void MapManager::draw(SDL_Surface *surface, SDL_Surface *mainSurface, int x, int y)
或者将引用的地址传递给预期的指针参数:
SDL_BlitSurface(surface, NULL, &mainSurface, new SDL_Rect{x, y, 32, 32});
我真的应该先了解指针(...
是的,我支持这一点。了解指针是 C/C++ 编程的基础,SDL 也不例外,正如您所看到的,SDL 经常使用指针。