| 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 | 
 |  | 
 | */ | 
 |  | 
 | } |