#include <iostream>
using namespace std;
class Vector3D;
class Vector2D {
public:
Vector2D(float x, float y) : x(x), y(y) { }
void print() { cout << "(" << x << ", " << y << ")" << endl; }
float getX() { return x; }
float getY() { return y; }
operator Vector3D();
private:
float x;
float y;
};
class Vector3D {
public:
Vector3D(float x, float y, float z) : x(x), y(y), z(z) { }
void print() { cout << "(" << x << ", " << y << ", " << z << ")" << std::endl; }
operator Vector2D() {
return Vector2D(x,y);
}
float getX() { return x; }
float getY() { return y; }
float getZ() { return z; }
private:
float x;
float y;
float z;
};
Vector2D::operator Vector3D()
{
return Vector3D(x, y, 0.0);
}
int main()
{
Vector2D v2(1, 2);
Vector3D v3(v2);
v3.print();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgVmVjdG9yM0Q7CiAKY2xhc3MgVmVjdG9yMkQgewpwdWJsaWM6CiAgICBWZWN0b3IyRChmbG9hdCB4LCBmbG9hdCB5KSA6IHgoeCksIHkoeSkgeyB9CiAKICAgIHZvaWQgcHJpbnQoKSB7IGNvdXQgPDwgIigiIDw8IHggPDwgIiwgIiA8PCB5IDw8ICIpIiA8PCBlbmRsOyB9CiAKICAgIGZsb2F0IGdldFgoKSB7IHJldHVybiB4OyB9CiAgICBmbG9hdCBnZXRZKCkgeyByZXR1cm4geTsgfQogICAgCiAgICBvcGVyYXRvciBWZWN0b3IzRCgpOwogCnByaXZhdGU6CiAgICBmbG9hdCB4OwogICAgZmxvYXQgeTsKfTsKIApjbGFzcyBWZWN0b3IzRCB7CnB1YmxpYzoKICAgIFZlY3RvcjNEKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHopIDogeCh4KSwgeSh5KSwgeih6KSB7IH0KIAogICAgdm9pZCBwcmludCgpIHsgY291dCA8PCAiKCIgPDwgeCA8PCAiLCAiIDw8IHkgPDwgIiwgIiA8PCB6IDw8ICIpIiA8PCBzdGQ6OmVuZGw7IH0KIAogICAgb3BlcmF0b3IgVmVjdG9yMkQoKSB7CiAgICAgICAgcmV0dXJuIFZlY3RvcjJEKHgseSk7CiAgICB9CiAKICAgIGZsb2F0IGdldFgoKSB7IHJldHVybiB4OyB9CiAgICBmbG9hdCBnZXRZKCkgeyByZXR1cm4geTsgfQogICAgZmxvYXQgZ2V0WigpIHsgcmV0dXJuIHo7IH0KIApwcml2YXRlOgogICAgZmxvYXQgeDsKICAgIGZsb2F0IHk7CiAgICBmbG9hdCB6Owp9OwoKVmVjdG9yMkQ6Om9wZXJhdG9yIFZlY3RvcjNEKCkKewogICAgcmV0dXJuIFZlY3RvcjNEKHgsIHksIDAuMCk7Cn0KIAppbnQgbWFpbigpIAp7CiAgICBWZWN0b3IyRCB2MigxLCAyKTsKICAgIFZlY3RvcjNEIHYzKHYyKTsKICAgIHYzLnByaW50KCk7CiAgICByZXR1cm4gMDsKfQog