c – 混合类型与特征矩阵的错误

前端之家收集整理的这篇文章主要介绍了c – 混合类型与特征矩阵的错误前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
没有快速找到答案,我可以在堆栈看到这个问题,所以我想我会添加一个.

说我有c特征库中的以下示例代码

Eigen::Matrix4d m1;
Eigen::Matrix4f m2;
m1 << 1,2,3,4 ... 16
m2 = m1; //Compile error here.

我在最后一行得到一个编译错误归结为:

YOU_MIXED_DIFFERENT_NUMERIC_TYPES__YOU_NEED_TO_USE_THE_CAST_METHOD_OF_MATRIXBASE_TO_CAST_NUMERIC_TYPES_EXPLICITLY

什么是一个简单的方法解决这个问题?

解决方法

所以解决这个问题的方法,我花了很长时间找到是使用派生的方法描述的 here.现在的定义是这样的:
internal::cast_return_type<Derived,const CwiseUnaryOp<internal::scalar_cast_op<typenameinternal::traits<Derived>::Scalar,NewType>,const Derived> >::type cast() const

哪个病人承认,分了我一点.但事实证明这是很简单的(唯一的解释,我可以发现是在Eigen 2.0文档是令人沮丧的).所有你需要做的是这样的:

m2 = m1.cast<float>();

问题解决了.

猜你在找的C&C++相关文章