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

时间:2016-11-06 08:54:59

标签: c++ arrays eigen

我需要定义一个带有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而没有任何错误吗?

感谢。

1 个答案:

答案 0 :(得分:4)

如果Map的参数是非const类型(例如Eigen::VectorXd),那么它会假定它可以修改原始缓冲区(在您的情况下{ {1}})。由于函数需要*data限定缓冲区,因此您必须告诉地图它是const。将您的const定义为

typedef

它应该有用。