我正在使用 SDL 的 RenderCopy 功能:
SDL_RenderCopy(Game::mRenderer, Game::mTexture, &mSourceRect, &mDestinationRect);
最后两个参数是复制图像的源矩形和目标矩形,它需要一个指向矩形的指针,上面的代码按预期工作,它们再次被键入为“SDL_Rect Game::mSourceRect” ,正如您对成员变量所期望的那样。
每当我尝试将范围解析运算符应用于矩形时,当它们传递给此函数且仅此函数时,我都会遇到问题:
SDL_RenderCopy(Game::mRenderer, Game::mTexture, &Game::mSourceRect, &Game::mDestinationRect);
错误是:
argument of type "SDL_Rect Game::*" is incompatible with parameter of type
"const SDL_Rect *" SDL2Refresher
如果您检查 &Game::mSourceRect 的类型,它会解析为与我不使用范围解析运算符完全相同的东西,那么我的问题是为什么这会导致代码无法编译?
在错误列表中,它显示“SDL_Rect Game::* 与类型为“const SDL_Rect *”的参数不兼容”,如果这有帮助的话。
我不能对这两个参数使用范围解析运算符,但我习惯性地只使用它,因为我整天都在写 C#,而且我经常通过它们的命名空间显式访问事物,所以我很难不定义范围我经常这样做(加上明确界定这样的事情一开始并不是一件坏事,所以我想坚持下去)。