我需要定义一个接受const C数组并将其映射到本征图的函数.以下代码给我一个错误:
double data[10] = {0.0};
typedef Eigen::Map<Eigen::VectorXd> MapVec;
MapVec fun(const double* data) {
MapVec vec(data, n);
return vec;
}
如果我从函数定义中删除const,则代码可以正常工作.但是有可能保留const而不会出现任何错误吗?
谢谢.
解决方法:
如果Map的参数是非常量类型(e.Eigen :: VectorXd),则假定它可以修改原始缓冲区(在您的情况下为* data).由于该函数需要一个const限定缓冲区,因此您必须告诉映射它是const.将您的typedef定义为
typedef Eigen::Map<const Eigen::VectorXd> MapVec;
它应该工作.