/usr/local/include/eigen3/Eigen/src/Core/functors/AssignmentFunctors.h:24:102: error: no match for ‘operator=’ (operand types are ‘ceres::Jet<double, 3>’ and ‘const double’)
/usr/local/include/eigen3/Eigen/src/Core/functors/AssignmentFunctors.h:24:102: error: cannot convert ‘const ceres::Jet<double, 3>’ to ‘double’ in assignment
RONG_INLINE void assignCoeff(DstScalar& a, const SrcScalar& b) const { a = b; }
^
no match for ‘operator=’ (operand types are ‘ceres::Jet<double, 3>’ and ‘const double’)
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
2条回答 默认 最新
Leodong. 2023-09-20 17:49关注该回答通过自己思路及引用到GPTᴼᴾᴱᴺᴬᴵ搜索,得到内容具体如下:
这个错误是因为你试图将一个ceres::Jet<double, 3>类型的对象赋值给一个const double类型的变量,这是不允许的。你需要确保赋值操作的两个操作数类型是兼容的。
如果你想要修改ceres::Jet<double, 3>对象的某个值,你可以使用其成员函数来获取和设置值。例如,如果你想要获取第一个值,你可以使用Jet::operator[](int index) const成员函数;如果你想要设置第一个值,你可以使用Jet::Coefficients(double* values, int size)构造函数。以下是一个示例:
#include <ceres/jet.h> ceres::Jet<double, 3> jet; // 假设jet已经被初始化... // 获取第一个值 double first_value = jet[0]; // 设置第一个值为新值 jet.SetCoefficients({new_value}, 1);请根据你的实际需求修改上述代码。
如果以上回答对您有所帮助,点击一下采纳该答案~谢谢
解决 无用评论 打赏 举报