For instance, say you need to impliment a GUI, so you have yourself a rectangle struct which consists of four floating point values (the origin and difference between the opposite corner) ...Now you want those four values, but you also have a 2D vector struct.
Here is a portable alternative to achieve this: struct Rectangle { private: Vector2D m_Position; Vector2D m_Size; public: Vector2D& position() { return m_Position; } const Vector2D& position() const { return m_Position; } Vector2D& size() { return m_Size; } const Vector2D& size() const { return m_Size; } float& left() { return m_Position.x; } float left() const { return m_Position.x; } float& top() { return m_Position.y; } float top() const { return m_Position.y; } float& width() { return m_Size.x; } float width() const { return m_Size.x; } float& height() { return m_Size.y; } float height() const { return m_Size.y; } }; Then you can access the members like this: Rect somerectangle; Rect.position().x = 45; Rect.left() = 45;