template <class T>
class Z
{
private:
X* xxx;
public:
Z(X *x)
xxx=x;
xxx->x();
}
T *Get()
return (T *)xxx;
};