这个函数是如何实现的 foo.getSize().x

How is implemented this function foo.getSize().x

最近我开始学习sfml图形,我看到了这种函数window.getSize().x或.y,我的问题是我该如何编写这样的函数,更准确地说是使用.x或 .y 在对象函数上?

to use .x or .y on an object function?

这似乎表明对语法有误解。 .x.y 未应用于函数。相反,它们应用于函数返回的值。

在这种情况下,sf::Window::getSize() returns 一个 sf::Vector2usf::Vector2u class 有两个 public 属性,xy。写作

unsigned value = window.getSize().x;

(简洁和)等同于写作(更冗长)

sf::Vector2u size = window.getSize();
unsigned value = size.x;

函数没有定义.x; class 确实如此。

那些函数 return 内部具有变量 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;
};

这只是一个简单的示例,但它应该向您展示它是如何工作的。