У меня есть шаблонная матричная библиотека с именем CMatrix
, которая взаимодействует с библиотекой Eigen для некоторых функций. Для переключения между библиотеками У меня есть простая функция:Eigen MatrixXd как возвращаемый тип
template <typename T>
MatrixXd CMatrix<T>::ToMatrixXd()
{
const int nrow=m_row;
const int ncol=m_column;
MatrixXd matrixXd(nrow,ncol);
for(unsigned int i=0;i<nrow;i++)
for(unsigned int j=0;j<ncol;j++)
matrixXd(i,j)=GetCellValue(i,j);
return matrixXd;
}
Здесь TYPENAME Т атомарные типы, такие как двойной, поплавок ...
Я называю эту функцию в другой функции, как:
MatrixXd eigMat=m.ToMatrixXd();
я получаю следующее сообщение об ошибке:
const math::CMatrix <double> as 'this' argument of 'Eigen::MatrixXd math::CMatrix<T>::ToMatrixXd() [with T = double; Eigen::MatrixXd = Eigen::Matrix <double, -1, -1>] discards qualifiers [-fpermissive]
Кажется, что количество строк и столбцов остается отрицательным, что не имеет смысла. Я пробовал:
MatrixXd eigMat(nrow,ncolumn) //both nrow and ncolumn positive
eigMat=m.ToMatrixXd();
Я все еще получаю вышеупомянутое сообщение об ошибке. Что может быть не так?
'MatrixXd eigMat = m.ToMatrixXd();' где вы делаете 'm'? – xaxxon