#include <Eigen/Core> #include <iostream> class MyVectorType : public Eigen::VectorXd { public: MyVectorType(void) : Eigen::VectorXd() {} // This constructor allows you to construct MyVectorType from Eigen expressions template <typename OtherDerived> MyVectorType(const Eigen::MatrixBase<OtherDerived>& other) : Eigen::VectorXd(other) {} // This method allows you to assign Eigen expressions to MyVectorType template <typename OtherDerived> MyVectorType& operator=(const Eigen::MatrixBase<OtherDerived>& other) { this->Eigen::VectorXd::operator=(other); return *this; } }; int main() { MyVectorType v = MyVectorType::Ones(4); v(2) += 10; v = 2 * v; std::cout << v.transpose() << std::endl; }