应用范围解析运算符导致编译器阻塞

Applying scope resolution operator causes compiler to choke

我正在使用 SDL 的 RenderCopy 函数:

SDL_RenderCopy(Game::mRenderer, Game::mTexture, &mSourceRect, &mDestinationRect);

最后两个参数是将图像复制到和从中复制的源和目标 rect,它需要一个指向 rect 的指针,上面的代码按预期工作,它们的类型为 "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::* is not compatible with parameter of type "const SDL_Rect *" " 如果有帮助的话。

我不能对这两个参数使用范围解析运算符,但我习惯性地使用它,因为我整天在工作中编写 C#,并且我不断地通过它们的命名空间显式访问事物,所以这对我来说很难当我经常这样做时不要确定范围(加上明确确定这样的范围并不是一件坏事,所以我想坚持下去)。

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