警告:“枚举sf :: Keyboard :: Key”和“枚举sf :: Mouse :: Button”之间的比较[-Wenum-compare] |

问题描述

我在国际象棋游戏中使用C ++图形中的SFML libraby。

在游戏中移动棋子时会发生鼠标左键事件。因此,这就是我最初的跟踪方式。

sf::Event e;
if (e.type == sf::Event::MouseButtonReleased){
    if(e.key.code == sf::Mouse::Left){
     //Do something
    }
}

这将提供以下编译结果警告

|1175|warning: comparison between 'enum sf::Keyboard::Key' and 'enum sf::Mouse::Button' [-Wenum-compare]|

代码仍将正确执行。

  • 为什么会出现此问题?
  • 如何避免此警告?

解决方法

key中的成员sf::Event(即sf::Event::key)是枚举sf::Keyboard::Key的枚举,而枚举sf::Mouse::Left属于枚举{ {1}}。

原则上,在处理事件sf::Mouse::Buttonkey时,您只应该对sf::Event中的联合sf::Event::KeyPressed成员感兴趣。

在处理事件sf::Event::KeyReleased时,正在将联合中的错误数据成员(sf::Event::MouseButtonReleased)与枚举器sf::Event::key进行比较。尝试与sf::Mouse::Left进行比较:

e.mouseButton.button

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...