缺少某些重载的 SFML 方法,而其他方法很好

Missing certain overloaded SFML methods, while others are fine

我正在尝试在 SFML 上构建应用程序并决定自己构建它而不是使用 apt 包管理器。我也在使用 cmake,但我认为这对我的问题来说并不重要:

在我的文件 UserInterface.h 中我有 #include 在我使用 apt 的 SFML-dev 之前,它工作得很好。 编译器告诉很多接受 (int x, int y) 的 SFML 方法不存在(同时找到接受 sf::Vector2f 的版本)。这些重载方法之前工作正常。

现在我查看了 source code of SFML and can't actually find the overloaded functions? even though they are in the Documentation:

void sf::Transformable::setOrigin(float x, float y)     

我不明白我哪里做错了。 SFML 的其余部分似乎没问题。如果没有声明,SFML 如何支持这些重载方法?

这是我在构建时得到的输出:

error: no matching function for call to ‘sf::RectangleShape::setOrigin(int, int)’
  103 |     background.setOrigin(0, 0);
      |                              ^
In file included from /usr/local/include/SFML/Graphics/Shape.hpp:33,
                 from /usr/local/include/SFML/Graphics/CircleShape.hpp:32,
                 from /usr/local/include/SFML/Graphics.hpp:34,
                 from /home/bonkt/dev/digitus/src/UserInterface/UserInterface.h:1,
                 from /home/bonkt/dev/digitus/src/UserInterface/UserInterface.cpp:1:
/usr/local/include/SFML/Graphics/Transformable.hpp:115:10: note: candidate: ‘void sf::Transformable::setOrigin(const Vector2f&)’
  115 |     void setOrigin(const Vector2f& origin);

编辑: 将参数 (int) 转换为浮点数时它不起作用,所以这不是问题所在。它也发生在许多其他类似的方法中: window.setPosition() window.setScale()

sf::FloatRect()

找到我的答案:我之前使用的 apt SFML 包一定是旧版本的 SFML。 就在几周前,我在他们的 github 处发现了 these 个合并的拉取请求。 SFML 决定不需要数字对,因为 sf::Vector2T 的用法与 API 的其余部分更一致。 - 所以我将更改我的代码以使用 SF::Vector2f

新的 pullrequests 在 5 天前才合并,我真的很不走运。