这个函数是如何实现的 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::Vector2u
。 sf::Vector2u
class 有两个 public 属性,x
和 y
。写作
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;
};
这只是一个简单的示例,但它应该向您展示它是如何工作的。
最近我开始学习sfml图形,我看到了这种函数window.getSize().x或.y,我的问题是我该如何编写这样的函数,更准确地说是使用.x或 .y 在对象函数上?
to use .x or .y on an object function?
这似乎表明对语法有误解。 .x
和 .y
未应用于函数。相反,它们应用于函数返回的值。
在这种情况下,sf::Window::getSize()
returns 一个 sf::Vector2u
。 sf::Vector2u
class 有两个 public 属性,x
和 y
。写作
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;
};
这只是一个简单的示例,但它应该向您展示它是如何工作的。