我需要定义一个带有const
C数组并将其映射到Eigen
映射的函数。以下代码给出了一个错误:
double data[10] = {0.0};
typedef Eigen::Map<Eigen::VectorXd> MapVec;
MapVec fun(const double* data) {
MapVec vec(data, n);
return vec;
}
如果我从函数定义中删除const
,则代码可以正常工作。但是可以保留const
而没有任何错误吗?
感谢。
答案 0 :(得分:4)
如果Map
的参数是非const
类型(例如Eigen::VectorXd
),那么它会假定它可以修改原始缓冲区(在您的情况下{ {1}})。由于函数需要*data
限定缓冲区,因此您必须告诉地图它是const
。将您的const
定义为
typedef
它应该有用。