mirror of
				https://github.com/PaddlePaddle/FastDeploy.git
				synced 2025-10-31 11:56:44 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			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
 | ||
| 
 | ||
| */
 | ||
| 
 | ||
| }
 | 
