나는 선형 대수학을 내부적으로 수행하는 함수를 가지고 있지만, 정규 밀도 행렬과 대각 행렬을 모두 전달할 수 있기를 원한다. 나는 다음과 같은 구문 시도 :C++ Eigen : 일반 (고밀도) 매트릭스뿐만 아니라 DiagonalMatrix도 사용할 수있는 함수를 작성하는 방법은 무엇입니까?
void bla(const Vector* v, const Eigen::MatrixBase<float>* A, Vector* out)
{
int colunms = A->cols();
....
}
을하지만 MatrixBase은() 함수 COLS이 없기 때문에 그 컴파일되지 않습니다!
DiagonalMatrix 클래스에는 toDenseMatrix() 함수가 있지만 값의 내부 복사가 필요하므로 DiagonalMatrix에서 얻으려는 모든 최적화가 무효화됩니다.
어떻게하면됩니까?
왜 포인터가 아닌 참조를 통과 할 수 있을까? –
그것이 어떻게 다른지 알 수 없습니다. MatrixBase 참조에는 여전히 cols() 멤버 함수가 없습니다. –
나는 그것이 당신의 문제에 대한 해결책 이라기보다 일반적인 조언이라고 생각했다. – leemes