35 lines
1.3 KiB
Plaintext
35 lines
1.3 KiB
Plaintext
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
|
||
|
||
*/
|
||
|
||
}
|