c-特征-将const数组映射到动态向量

我需要定义一个接受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;

它应该工作.

上一篇:vins_fusion学习笔记


下一篇:c-特征:沿一维复制项目,而无用分配