【问题标题】:How to create static member variable with Eigen types library如何使用 Eigen 类型库创建静态成员变量
【发布时间】:2017-01-10 19:33:44
【问题描述】:

我正在尝试实现一个具有来自Eigen 库类型的一些静态成员的类,但是我收到以下编译器错误

kalman.cpp:3:28: error: expected initializer before ‘<<’ token
 Eigen::Matrix2d Kalman::AA << 1,2,3,4;
                            ^

我不知道如何解决它。 Here,在文档库中有 Comma-initialization 部分描述了所选的初始化格式。当然, 在这样一个简单的主源代码中

#include <iostream>
#include "Eigen/Dense"
int main()
{
  Eigen::Matrix2d m;
  m << 1,2,3,4;
  std::cout << m << std::endl;
}

一切都按预期工作。但是,当我尝试使用 Eigen::Matrix2d 类型的静态成员变量来执行此操作时,如下所示

标题

#ifndef KALMAN_H
#define KALMAN_H

#include <iostream>
#include "Eigen/Dense"

class Kalman{
public:
    EIGEN_MAKE_ALIGNED_OPERATOR_NEW
    static Eigen::Matrix2d AA;
};
#endif /* KALMAN_H */

来源

#include "kalman.hpp"

Eigen::Matrix2d Kalman::AA << 1,2,3,4;

我收到了上述错误。我认为这可能与某种如何创建静态成员对象有关,但说实话我不知道。任何提示或推荐内容将不胜感激。

谢谢

【问题讨论】:

    标签: c++ static-methods eigen


    【解决方案1】:

    &lt;&lt; 不等同于赋值运算符,它将值写入现有矩阵。你可以用这个做你想做的事:

    Eigen::Matrix2d Kalman::AA = (Eigen::Matrix2d() << 1,2,3,4).finished();
    

    【讨论】:

      猜你喜欢
      • 2019-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多