2017-02-13 44 views
0

我想要一個簡單的方法來複制使用Eigen3 MatrixXd類的矩陣。爲此,我使用新方法創建頭文件,並使用宏uEIGEN_MATRIXBASE_PLUGIN將其包含在編譯中。如何向Eigen3基類添加新方法?

我想創建名爲copyMatrix()的方法,其簡單地等同於做 A = B 但在這種格式: A.copyMatrix(B)。

當我嘗試將其與下面的代碼的代碼:

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

我有編譯錯誤,如: 錯誤C2678:二進制「=」:沒有操作員發現這需要類型的左側操作數'const Eigen :: Matrix'(或者沒有可接受的轉換)

這是正確的語法嗎?

回答

1

這是因爲你的方法copyMatrixconst,只是將其刪除:

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