具有特征类的非限定 ID

  • 本文关键字:ID 特征 c++ eigen
  • 更新时间 :
  • 英文 :


以下代码似乎有问题。我收到错误消息

错误:数字常量之前应为非限定 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();
    // ...
}

最新更新