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