应用范围解析运算符会导致编译器阻塞
Applying scope resolution operator causes compiler to choke
我正在使用SDL的RenderCopy函数:
SDL_RenderCopy(Game::mRenderer, Game::mTexture, &mSourceRect, &mDestinationRect);
最后两个参数是复制图像的源和目标rect,它期望一个指向rect的指针,上面的代码像人们期望的那样工作,它们被键入为"SDL_Rect Game::mSourceRect",再一次,正如你所期望的成员变量。
每当我试图将范围解析运算符应用于传递给此函数且仅传递给此函数的rects时,我就会遇到问题:
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::mSourceRect)作为参数是否有效?编译器错误看起来像是将类和作用域视为类型的一部分。也许如果你先计算类型(用括号),然后在括号外应用(&)的地址。
相关文章:
- 基于范围循环到旧编译器的旧样式
- 为什么当我的代码超出函数范围时,"does not name a type"出现编译器错误?
- 编译器是否足够聪明,以至于 std::move 变量超出范围?
- 函数返回本地变量,尽管变量不超出范围,没有编译器问题,并且代码执行
- Qt 编译器错误:未在此范围内声明"emit"
- 为什么编译器不优化集合元素上的空范围循环?
- C ++:对为什么编译器给出未在此范围内声明的错误感到困惑
- 扩展编译器以在编译时计算"complicated"函数(具有已知的输入值),超出"constexpr"的范围
- arm-none-eabi-g++ 编译器抛出编译错误pthread_exit未在此范围内声明
- 基于范围的for循环引发带有数组参数的编译器错误
- 模板类的方法使用全局范围内的 typedef.编译器错误
- 在 c++ 中定义的预编译器的范围是什么?
- int8_t、int16_t、int32_t 和 int64_t 在不同的C++编译器上是否具有相同的各自范围?
- 如果左值不再在其定义范围内使用,编译器是否允许将左值转换为右值引用
- 在Qt Creator中禁用编译器警告项目范围(当使用MSVC时)
- 如何将范围信息传递给c++编译器
- 应用范围解析运算符会导致编译器阻塞
- 编译器警告使用范围外变量的内存
- 编译器可以报告未知属性上的错误吗?即使有范围
- qmake 中的编译器范围值