我试图将Eigen :: Vector4d传递给这样的函数:
Matrix3d quat2DCM(Vector4d quat)
{
quat = quat;
return Matrix3d::Identity();
//nevemind the guts of this function, that'l come after this works
}
Run Code Online (Sandbox Code Playgroud)
VC++ 2005编译器给我以下错误:
错误C2719:'quat':带有__declspec(align('16'))的形式参数将不会对齐
Eigen :: Vector3d对象不会作为参数发生.我注意到在一些在线讨论中,Vector4d类对于它的对齐特别挑剔,比其他罐装typedef更多.在一个类中使用Vector4d时,我发现有必要使用EIGEN_MAKE_ALIGNED_OPERATOR_NEW覆盖它的宏new是否有类似的解决方法来传递它们的参数?
Dav*_*own 10
根据Eigen的说法,传递固定大小的特征对象可能" 非法或使程序崩溃".这是因为当通过值传递对象时,不遵守对齐修饰符Eigen使用.您应该更改您的功能,以便它需要const参考.
Matrix3d quat2DCM(const Vector4d& quat)
{
...
}
Run Code Online (Sandbox Code Playgroud)