|  | namespace Eigen { | 
|  |  | 
|  | /** \page TopicCustomizing_InheritingMatrix Inheriting from Matrix | 
|  |  | 
|  | Before inheriting from Matrix, be really, I mean REALLY, sure that using | 
|  | EIGEN_MATRIX_PLUGIN is not what you really want (see previous section). | 
|  | If you just need to add few members to Matrix, this is the way to go. | 
|  |  | 
|  | An example of when you actually need to inherit Matrix, is when you | 
|  | have several layers of heritage such as | 
|  | MyVerySpecificVector1, MyVerySpecificVector2 -> MyVector1 -> Matrix and | 
|  | MyVerySpecificVector3, MyVerySpecificVector4 -> MyVector2 -> Matrix. | 
|  |  | 
|  | In order for your object to work within the %Eigen framework, you need to | 
|  | define a few members in your inherited class. | 
|  |  | 
|  | Here is a minimalistic example: | 
|  |  | 
|  | \include CustomizingEigen_Inheritance.cpp | 
|  |  | 
|  | Output: \verbinclude CustomizingEigen_Inheritance.out | 
|  |  | 
|  | This is the kind of error you can get if you don't provide those methods | 
|  | \verbatim | 
|  | error: no match for ‘operator=’ in ‘v = Eigen::operator*( | 
|  | const Eigen::MatrixBase<Eigen::Matrix<double, -0x000000001, 1, 0, -0x000000001, 1> >::Scalar&, | 
|  | const Eigen::MatrixBase<Eigen::Matrix<double, -0x000000001, 1> >::StorageBaseType&) | 
|  | (((const Eigen::MatrixBase<Eigen::Matrix<double, -0x000000001, 1> >::StorageBaseType&) | 
|  | ((const Eigen::MatrixBase<Eigen::Matrix<double, -0x000000001, 1> >::StorageBaseType*)(& v))))’ | 
|  | \endverbatim | 
|  |  | 
|  | */ | 
|  |  | 
|  | } |