如何向Eigen3基类添加新方法?

时间:2017-02-13 15:52:08

标签: eigen3

我想用一种简单的方法来复制使用Eigen3 MatrixXd类的矩阵。为此,我使用新方法创建头文件,并使用宏uEIGEN_MATRIXBASE_PLUGIN包含在编译中。

我想创建一个名为copyMatrix()的方法,它与do完全相同 A = B. 但是这种格式: A.copyMatrix(B)。

当我尝试使用以下代码对其进行编码时:

template<typename OtherDerived>
inline void copyMatrix(const MatrixBase<OtherDerived>& other) const
{
    derived() = other.derived();
}

我有编译错误,例如:  错误C2678:二进制'=':找不到哪个运算符采用'const Eigen :: Matrix'类型的左手操作数(或者没有可接受的转换)

这是正确的语法?

1 个答案:

答案 0 :(得分:1)

这是因为您的方法copyMatrixconst,只需删除它:

template<typename OtherDerived>
inline void copyMatrix(const MatrixBase<OtherDerived>& other)
{
    derived() = other.derived();
}