【问题标题】:unqualified id with Eigen class具有 Eigen 类的不合格 id
【发布时间】:2017-01-19 14:10:48
【问题描述】:

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

错误:数字常量之前的预期不合格 ID

特征::矩阵 M_inv1_abc =pose_l.block(0, 0).inverse(); 这是一个代码示例:

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;在其他帖子中,例如 Expected unqualified-id before numeric constant for defining a number 重新定义有帮助,但对我来说没有。

我错过了什么?

最好的 曼努克劳斯

【问题讨论】:

  • 看到这个page,需要在block前加上template关键字:pose_l.template block&lt;3, 3&gt;(0, 0)
  • 谢谢,这有帮助。我想将您的帖子标记为解决方案,我该怎么做(此论坛中的新内容...)

标签: c++ eigen


【解决方案1】:
pose_l.template block<3, 3>(0, 0).inverse();

具体可以参考c++如何推导变量的类型

【讨论】:

    【解决方案2】:

    试试这个(在块子表达式周围添加括号):

    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();
        // ...
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-09-28
      • 1970-01-01
      • 2020-05-11
      • 2023-03-02
      • 1970-01-01
      • 2013-03-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多