我有一個名爲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;
}
在這裏,類型名T是原子的類型,如雙,浮子...
我調用該函數在另一個函數爲:
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