我需要定义一个函数,该函数采用constC数组并将其映射到Eigen映射中。以下代码给我一个错误:
double data[10] = {0.0};
typedef Eigen::Map<Eigen::VectorXd> MapVec;
MapVec fun(const double* data) {
MapVec vec(data, n);
return vec;
}
Run Code Online (Sandbox Code Playgroud)
如果我const从函数定义中删除代码,则可以正常工作。但是是否可以保留且const没有任何错误?
谢谢。
如果Map的参数是非const类型(e。Eigen::VectorXd),则假定它可以修改原始缓冲区(在您的情况下*data)。由于该函数需要一个const合格的缓冲区,因此您必须告诉地图它是const。定义typedef为
typedef Eigen::Map<const Eigen::VectorXd> MapVec;
Run Code Online (Sandbox Code Playgroud)
它应该工作。
| 归档时间: |
|
| 查看次数: |
857 次 |
| 最近记录: |