Eigen MatrixXd作为返回类型

Eigen MatrixXd as return type

本文关键字:返回类型 MatrixXd Eigen      更新时间:2023-10-16

我有一个名为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;
}

这里的类型名称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();

我仍然收到上面提到的错误信息。可能出了什么问题?

**const** math::CMatrix <double> as 'this' argument

MatrixXd eigMat=m.ToMatrixXd();中的m似乎是consttemplate <typename T> MatrixXd CMatrix<T>::ToMatrixXd()不是const方法。