编译:Sophus的错误修正

编译:Sophus的错误修正。

错误如下:

/home/admin1/S-Fast_LIO-ws/Sophus/sophus/so2.cpp: In constructor ‘Sophus::SO2::SO2()’:
/home/admin1/S-Fast_LIO-ws/Sophus/sophus/so2.cpp:32:26: error: lvalue required as left operand of assignment
   32 |   unit_complex_.real() = 1.;
      |                          ^~
/home/admin1/S-Fast_LIO-ws/Sophus/sophus/so2.cpp:33:26: error: lvalue required as left operand of assignment
   33 |   unit_complex_.imag() = 0.;
      |                          ^~

错误原因

你遇到的编译错误:

error: lvalue required as left operand of assignment

是因为 Eigen 的复数类型(Eigen::Complex)的 real()imag() 返回的是临时值(rvalue),而非可修改的左值(lvalue)
直接赋值给临时值是非法的,因此编译器报错。

修改前:
SO2::SO2() {
  unit_complex_.real() = 1.;  // 错误:临时值不可赋值
  unit_complex_.imag() = 0.;  // 错误
}

修改后:
SO2::SO2() : unit_complex_(1., 0.) {}  // 直接初始化复数

你可能感兴趣的:(机器人-Robot,机器人,李群)