I need to define a function that takes a const
C array and maps it into an Eigen
map. The following code gives me an error:
double data[10] = {0.0};
typedef Eigen::Map<Eigen::VectorXd> MapVec;
MapVec fun(const double* data) {
MapVec vec(data, n);
return vec;
}
If I remove const
from the function definition the code works fine. But is it possible to retain the const
without any errors?
Thanks.
If the Map
's parameter is a non-const
type (e.Eigen::VectorXd
) then it assumes that it can modify the raw buffer (in your case *data
). As the function expects a const
qualified buffer, you have to tell the map that it's const
. Define your typedef
as
typedef Eigen::Map<const Eigen::VectorXd> MapVec;
and it should work.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With