#include template class TPoint3 { public: typedef Eigen::Matrix EVec; EVec v; public: inline TPoint3() {} inline TPoint3(const TYPE& _x, const TYPE& _y, const TYPE& _z) : v(_x, _y, _z) {} inline operator const EVec& () const { return v; } inline operator EVec& () { return v; } }; int main() { typedef double TYPE; TPoint3 X(0,1,2); Eigen::Matrix eX(X); return 0; }