【发布时间】:2020-06-13 16:25:34
【问题描述】:
最近开始学习 sfml 图形,看到了 window.getSize().x 或 .y 这种函数,我的问题是如何编写这样的函数,更准确地说是使用 .x 或 .y对象函数?
【问题讨论】:
-
SFML的代码是完全开源的,这意味着您可以看到实现。 https://github.com/SFML/SFML
最近开始学习 sfml 图形,看到了 window.getSize().x 或 .y 这种函数,我的问题是如何编写这样的函数,更准确地说是使用 .x 或 .y对象函数?
【问题讨论】:
SFML 的代码是完全开源的,这意味着您可以看到实现。 https://github.com/SFML/SFML
这些函数返回一个内部具有变量 x 和 y 的向量对象。
有点像这样的
template<typename T>
struct Vec2
{
T x, y;
Vec2(T x, T y)
: x(x), y(y)
};
class Window
{
public:
Vec2<unsigned int> getSize()
{
return size;
}
private:
Vec2<unsigned int> size;
};
这只是一个简单的例子,但它应该向您展示它是如何工作的。
【讨论】:
在对象函数上使用 .x 或 .y?
这似乎表明对语法的误解。 .x 和 .y 未应用于该函数。相反,它们应用于函数返回的值。
在这种情况下,sf::Window::getSize() 返回一个sf::Vector2u。 sf::Vector2u 类有两个公共属性,x 和 y。写作
unsigned value = window.getSize().x;
是(简洁)等同于写作(更冗长)
sf::Vector2u size = window.getSize();
unsigned value = size.x;
函数没有定义.x;类。
【讨论】: