2017-02-13 7 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

Это происходит потому, что ваш метод copyMatrix является const, просто удалите его:

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