Eigen Vector4d作为函数参数?

时间:2012-02-06 23:06:25

标签: c++ eigen

我试图将Eigen :: Vector4d传递给这样的函数:

  Matrix3d quat2DCM(Vector4d quat)
  {
    quat = quat;
    return Matrix3d::Identity();
    //nevemind the guts of this function, that'l come after this works
  }

VC ++ 2005编译器给出了以下错误:

  

错误C2719:'quat':带__declspec的形式参数(align('16'))将不会对齐

Eigen :: Vector3d对象不会作为参数发生。我注意到在一些在线讨论中,Vector4d类对于它的对齐特别挑剔,比其他罐装typedef更多。在类中使用Vector4d时,我发现有必要使用宏EIGEN_MAKE_ALIGNED_OPERATOR_NEW来覆盖new是否有类似的解决方法来传递它们的参数?

1 个答案:

答案 0 :(得分:10)

根据Eigen的证明,传递固定大小的特征对象可以“be illegal or make your program crash”。这是因为当通过值传递对象时,不遵守对齐修饰符Eigen使用。您应该更改您的功能,以便它需要const引用。

Matrix3d quat2DCM(const Vector4d& quat)
{
    ...
}