我有一个名为CMatrix
的模板化矩阵库,它与特征库接口以实现某些功能。为了在库之间切换,我有一个简单的功能:
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 T是原子类型,例如double,float ...
我在另一个函数中调用此函数:
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();
我仍然收到上述错误消息。可能出现什么问题?
答案 0 :(得分:0)
**const** math::CMatrix <double> as 'this' argument
似乎m
中的MatrixXd eigMat=m.ToMatrixXd();
是const
但是
template <typename T> MatrixXd CMatrix<T>::ToMatrixXd()
不是const
方法。