【发布时间】:2017-02-22 00:49:12
【问题描述】:
我正在使用 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#,而且我经常通过它们的命名空间显式访问事物,所以我很难不当我经常这样做时,范围内的事情(加上明确地范围内这样的事情开始并不是一件坏事,所以我想坚持下去)。
【问题讨论】:
-
你不小心形成了一个指向成员的指针。
-
Game 是命名空间还是类?
-
对不起,Game 是一个类,应该提到的。
-
@TrevorHart -- 但我习惯性地只是使用它,因为我整天在工作中编写 C# -- 不要使用 C# 作为编写 C++ 代码的模型。它们不是同一种语言。
-
@PaulMcKenzie 这不是一个模型,而是一种习惯,在 C++ 中定义类和命名空间实际上比使用整个命名空间更有效。
标签: c++ pointers sdl-2 scope-resolution