【问题标题】:How is implemented this function foo.getSize().x这个函数 foo.getSize().x 是如何实现的
【发布时间】:2020-06-13 16:25:34
【问题描述】:

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

【问题讨论】:

标签: c++ syntax sfml


【解决方案1】:

这些函数返回一个内部具有变量 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::Vector2usf::Vector2u 类有两个公共属性,xy。写作

    unsigned value = window.getSize().x;
    

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

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

    函数没有定义.x;类。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-23
      • 1970-01-01
      • 2015-06-02
      • 2011-05-06
      相关资源
      最近更新 更多