内部で線形代数を実行する関数がありますが、通常の密な行列と対角行列の両方を渡すことができるようにしたいと考えています (後者は効率のためです)。次の構文を試しました。
void bla( const Vector* v, const Eigen::MatrixBase<float>* A, Vector* out )
{
int colunms = A->cols();
....
}
ただし、MatrixBase には cols() 関数がないため、コンパイルできません。
DiagonalMatrix クラスに toDenseMatrix() 関数があることは知っていますが、値の内部コピーが含まれているため、DiagonalMatrix から取得したいすべての最適化が無効になることが懸念されます。
これについてどうすればいいですか?