web-dev-qa-db-ja.com

タイプと固有行列の混合エラー

この問題についてスタック上で確認できる迅速な回答がなかったので、追加すると思いました。

C++ EigenLibraryから次のサンプルコードがあるとします。

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

これを修正する簡単な方法は何ですか?

21

したがって、これを修正する方法は、見つけるのに煩わしいほど長い時間がかかりましたが、 ここ で説明されている派生castメソッドを使用することです。今の定義はこれです:

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>();

問題が解決しました。

30