代码 std::array<double, 16> new_pose;Matrix3d matrix_xmate_before for (int i = 0; i < 3; i++) { matrix_xmate_before(i, 0) = new_pose[i * 4 + 0]; matrix_xmate_before(i, 1) = new_pose[i * 4 + 1]; matrix_xmate_before(i, 2) = new_pose[i * 4 + 2]; } 报错 error: static assertion failed: THE_BRACKET_OPERATOR_IS_ONLY_FOR_VECTORS__USE_THE_PARENTHESIS_OPERATOR_INSTEAD 406 | EIGEN_STATIC_ASSERT(Derived::IsVectorAtCompileTime, | ^~~~~~~~~~~~~~~~~~~~~ 什么原因
时间: 2024-02-14 14:33:15 浏览: 90
C++11 std::shared_ptr总结与使用示例代码详解
这个报错是由于您试图使用括号运算符()来访问Eigen库中的Matrix3d的元素,但是Eigen库中的Matrix类型不支持括号运算符。相反,您应该使用圆括号运算符()来访问Matrix对象的元素。
要修复这个错误,您需要将代码中的括号运算符()替换为圆括号运算符(),如下所示:
```cpp
for (int i = 0; i < 3; i++) {
matrix_xmate_before(i, 0) = new_pose[i * 4 + 0];
matrix_xmate_before(i, 1) = new_pose[i * 4 + 1];
matrix_xmate_before(i, 2) = new_pose[i * 4 + 2];
}
```
请注意,在使用Eigen库的Matrix类型时,使用圆括号运算符()而不是括号运算符(())是非常重要的。这样就可以正确地将new_pose中的元素赋值给matrix_xmate_before中的对应位置了。
阅读全文