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