zzzzwwww822 2023-09-20 17:38 采纳率: 0%
浏览 115

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: 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; }
^

  • 写回答

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

    请根据你的实际需求修改上述代码。


    如果以上回答对您有所帮助,点击一下采纳该答案~谢谢

    评论

报告相同问题?

问题事件

  • 创建了问题 9月20日