0

我正在使用 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#,而且我经常通过它们的命名空间显式访问事物,所以我很难不定义范围我经常这样做(加上明确界定这样的事情一开始并不是一件坏事,所以我想坚持下去)。

4

1 回答 1

1

您能否检查 &(Game::mSourceRect) 作为参数是否有效?编译器错误看起来像是将类和范围视为类型的一部分。也许如果您首先评估类型(使用括号),然后在括号外应用 (&) 的地址。

于 2016-10-13T03:29:08.640 回答