明智操作者我想有一個本徵coeffientwise操作者在返回類型從輸入矩陣類型不同,例如,本徵係數具有不同的返回類型
struct TimesPi {
double operator()(int v) { return 3.14 * v; }
};
// in main
Eigen::Vector3i vec_ints(1, 2, 3);
Eigen::Vector3d vec_dbls = vec_ints.unaryExpr<TimesPi>();
這將導致一個編譯器錯誤消息error: static assertion failed: YOU_MIXED_DIFFERENT_NUMERIC_TYPES__YOU_NEED_TO_USE_THE_CAST_METHOD_OF_MATRIXBASE_TO_CAST_NUMERIC_TYPES_EXPLICITLY
。
如何生成返回不同類型的元素操作?
編輯:對於具體情況我有(不同於示例),我不能使用強制轉換(例如,與自定義標量類型)。我認爲unaryExpr在這裏使用可能是錯誤的。也許與CwiseUnaryOp?
一個更合適的例子可能是
struct SomeOperation {
double operator()(const Foo& v) { return v.attribute; }
};
// in main
Eigen::Matrix<Foo, 3, 1> vec_foos;
Eigen::Matrix<double, 3, 1> = vec_foos.unaryExpr<SomeOperation>();
我的天堂」 t使用了Eigen,但是我可以從錯誤消息中猜出它就像'vec_ints.cast().unaryExpr ()'。 –
chris
對於具體情況我有(不同於示例),我不能使用強制轉換。我認爲'unaryExpr'可能是在這裏使用的錯誤的東西。也許有'CwiseUnaryOp'的東西? – Jeff
這看起來像表達式模板類,不應該需要明確使用。在它的頁面上,我也看到它看起來應該直接允許'x * vec'。 – chris