#include <iostream>
#include <vector>
struct Vector3d { int x = 0; int y = 0; int z = 0;};
class Position:public Vector3d {};
class Velocity:public Vector3d {};
class Trajectory:public Position, public Velocity
{
public:
Vector3d &GetPosition() { return static_cast<Position&>(*this); }
Vector3d &GetVelocity() { return static_cast<Velocity&>(*this); }
};
std::ostream& operator << (std::ostream& os, const Vector3d & v)
{
return os << '{' << v.x << ',' << v.y << ',' << v.z << ',' << '}';
}
int main()
{
Trajectory t;
t.GetPosition() = {1, 2, 3};
t.GetVelocity() = {4, 5, 6};
std::cout << t.GetPosition() << t.GetVelocity() << std::endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgoKc3RydWN0IFZlY3RvcjNkIHsgaW50IHggPSAwOyBpbnQgeSA9IDA7IGludCB6ID0gMDt9OwpjbGFzcyBQb3NpdGlvbjpwdWJsaWMgVmVjdG9yM2Qge307CmNsYXNzIFZlbG9jaXR5OnB1YmxpYyBWZWN0b3IzZCB7fTsKCmNsYXNzIFRyYWplY3Rvcnk6cHVibGljIFBvc2l0aW9uLCBwdWJsaWMgVmVsb2NpdHkKewpwdWJsaWM6CiAgICBWZWN0b3IzZCAmR2V0UG9zaXRpb24oKSB7IHJldHVybiBzdGF0aWNfY2FzdDxQb3NpdGlvbiY+KCp0aGlzKTsgfQogICAgVmVjdG9yM2QgJkdldFZlbG9jaXR5KCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VmVsb2NpdHkmPigqdGhpcyk7IH0KfTsKCnN0ZDo6b3N0cmVhbSYgb3BlcmF0b3IgPDwgKHN0ZDo6b3N0cmVhbSYgb3MsIGNvbnN0IFZlY3RvcjNkICYgdikKewogICAgcmV0dXJuIG9zIDw8ICd7JyA8PCB2LnggPDwgJywnIDw8IHYueSA8PCAnLCcgPDwgdi56IDw8ICcsJyA8PCAnfSc7ICAgCn0KCgppbnQgbWFpbigpCnsKICAgIFRyYWplY3RvcnkgdDsKICAgIAogICAgdC5HZXRQb3NpdGlvbigpID0gezEsIDIsIDN9OwogICAgdC5HZXRWZWxvY2l0eSgpID0gezQsIDUsIDZ9OwoKICAgIHN0ZDo6Y291dCA8PCB0LkdldFBvc2l0aW9uKCkgPDwgdC5HZXRWZWxvY2l0eSgpIDw8IHN0ZDo6ZW5kbDsKfQo=