最近我开始学习sfml图形,看到这种函数window.getSize().x或.y,我的问题是如何写这样的函数,更准确的说是在一个对象函数上使用.x或.y?
这些函数返回一个内部有变量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
;类的做法。