我有一个在内部执行一些线性代数的函数,但我希望能够将常规密集矩阵以及对角矩阵(后者用于提高效率)传递给它。我尝试了以下语法:
void bla( const Vector* v, const Eigen::MatrixBase<float>* A, Vector* out )
{
int colunms = A->cols();
....
}
但这不会编译,因为 MatrixBase 没有 cols() 函数!
我知道 DiagonalMatrix 类有一个 toDenseMatrix() 函数,但我担心的是它涉及值的内部复制,因此会使我希望从 DiagonalMatrix 获得的所有优化无效。
我该怎么办?