COSC-4P80-Assignment-2/lib/eigen-3.4.0/doc/CustomizingEigen_Inheriting...

35 lines
1.3 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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