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