2016-11-06 5 views
0

Мне нужно определить функцию, которая принимает массив const C и отображает его в карту Eigen. Следующий код дает мне ошибку:Eigen - сопоставить массив const с динамическим вектором

double data[10] = {0.0}; 
typedef Eigen::Map<Eigen::VectorXd> MapVec; 

MapVec fun(const double* data) { 
    MapVec vec(data, n); 
    return vec; 
} 

Если удалить const из определения функции код работает отлично. Но возможно ли сохранить const без каких-либо ошибок?

Спасибо.

ответ

2

Если параметр Map «s является не- const типа (е. Eigen::VectorXd), то предполагается, что он может изменить необработанный буфер (в вашем случае *data). Поскольку функция ожидает const квалифицированного буфера, вы должны сообщить карте, что это const. Определите ваш typedef в

typedef Eigen::Map<const Eigen::VectorXd> MapVec; 

и он должен работать.