没有快速找到答案,我可以在堆栈看到这个问题,所以我想我会添加一个.
说我有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>();
问题解决了.