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

问题描述 投票:0回答:1

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

c++ syntax sfml
1个回答
2
投票

这些函数返回一个内部有变量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;
};

这只是一个简单的例子,但它应该告诉你它是如何工作的。


2
投票

在一个对象函数上使用.x或.y?

这似乎表明对语法的误解。语法上的误解。.x.y 并没有被应用到函数中。而是应用于函数返回的值。

在这种情况下: sf::Window::getSize() 返回一个 sf::Vector2u. 该 sf::Vector2u 类有两个公共属性。xy. 写作

unsigned value = window.getSize().x;

相当于

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

该函数没有定义 .x;类的做法。

© www.soinside.com 2019 - 2024. All rights reserved.