以下代码似乎有问题。我收到错误消息
错误:数字常量之前应为非限定 ID
特征::矩阵 M_inv1_abc = pose_l.block<3, 3>(0, 0).逆(); 这是一个代码示例:
template<typename T>
Eigen::Matrix<T, 4, 1> Function(Eigen::Matrix<T, 3, 4> pose_l)
{
// fails here
Eigen::Matrix<T, 3, 3> M_inv1 = pose_l.block<3, 3>(0, 0).inverse();
// this works, sample is from https://eigen.tuxfamily.org/dox/group__TutorialMatrixClass.html
Eigen::MatrixXf m(4,4);
Eigen::MatrixXf y(2,2);
m << 1, 2, 3, 4,
5, 6, 7, 8,
9,10,11,12,
13,14,15,16;
y = m.block<2,2>(1,1);
}
使用示例 MatrixXf,我不使用我的模板...
我重命名了pose_l和M_inv1;在其他帖子中,例如用于定义数字的数字常量之前的预期非限定 id重新定义有所帮助,但就我而言并非如此。
我错过了什么?
最好马努克劳斯
pose_l.template block<3, 3>(0, 0).inverse();
有关详细信息,可以参考 c++ 如何推断变量的类型
试试这个(在块子表达式周围添加括号):
template<typename T>
Eigen::Matrix<T, 4, 1> Function(Eigen::Matrix<T, 3, 4> pose_l)
{
Eigen::Matrix<T, 3, 3> M_inv1 = (pose_l.block<3, 3>(0, 0)).inverse();
// ...
}